123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these libraries and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
- /* $XConsortium: hashwalk.c /main/3 1995/11/01 17:33:39 rswiston $ */
- /***************************************************************
- * *
- * AT&T - PROPRIETARY *
- * *
- * THIS IS PROPRIETARY SOURCE CODE LICENSED BY *
- * AT&T CORP. *
- * *
- * Copyright (c) 1995 AT&T Corp. *
- * All Rights Reserved *
- * *
- * This software is licensed by AT&T Corp. *
- * under the terms and conditions of the license in *
- * http://www.research.att.com/orgs/ssr/book/reuse *
- * *
- * This software was created by the *
- * Software Engineering Research Department *
- * AT&T Bell Laboratories *
- * *
- * For further information contact *
- * gsf@research.att.com *
- * *
- ***************************************************************/
- /* : : generated by proto : : */
- #if !defined(__PROTO__)
- #if defined(__STDC__) || defined(__cplusplus) || defined(_proto) || defined(c_plusplus)
- #if defined(__cplusplus)
- #define __MANGLE__ "C"
- #else
- #define __MANGLE__
- #endif
- #define __STDARG__
- #define __PROTO__(x) x
- #define __OTORP__(x)
- #define __PARAM__(n,o) n
- #if !defined(__STDC__) && !defined(__cplusplus)
- #if !defined(c_plusplus)
- #define const
- #endif
- #define signed
- #define void int
- #define volatile
- #define __V_ char
- #else
- #define __V_ void
- #endif
- #else
- #define __PROTO__(x) ()
- #define __OTORP__(x) x
- #define __PARAM__(n,o) o
- #define __MANGLE__
- #define __V_ char
- #define const
- #define signed
- #define void int
- #define volatile
- #endif
- #if defined(__cplusplus) || defined(c_plusplus)
- #define __VARARG__ ...
- #else
- #define __VARARG__
- #endif
- #if defined(__STDARG__)
- #define __VA_START__(p,a) va_start(p,a)
- #else
- #define __VA_START__(p,a) va_start(p)
- #endif
- #endif
- #include "hashlib.h"
- /*
- * apply walker to each active bucket in the table
- */
- int
- hashwalk __PARAM__((Hash_table_t* tab, int flags, int register(*walker)(const char*, char*, __V_*), __V_* handle), (tab, flags, walker, handle)) __OTORP__(Hash_table_t* tab; int flags; int register(*walker)(); __V_* handle;){
- Hash_bucket_t* b;
- int v;
- Hash_position_t* pos;
- if (!(pos = hashscan(tab, flags))) return(-1);
- hash_info.table = tab->root->last.table = tab;
- v = 0;
- while (b = hashnext(pos))
- if ((v = (*walker)(hashname(b), (tab->flags & HASH_VALUE) ? b->value : (char*)b, handle)) < 0)
- break;
- hashdone(pos);
- return(v);
- }
|