📄 genutils.h
字号:
/****************** Start of $RCSfile: genutils.h,v $ ****************** $Source: /home/alb/afbackup/afbackup-3.3.8.1/RCS/genutils.h,v $* $Id: genutils.h,v 1.5 2005/01/15 08:49:29 alb Exp alb $* $Date: 2005/01/15 08:49:29 $* $Author: alb $********* description *********************************************************************************************************************/#ifndef __GENUTILS_H#define __GENUTILS_H __GENUTILS_H#include <lconf.h>#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <string.h>#include <math.h>#include <sys/types.h>#include <x_types.h>#define NO_ERROR 0#define RET_ON_ERROR(function) \ { Int32 errfl; \ errfl = (Int32)(function); \ if(errfl != NO_ERROR) \ return(errfl); \ }#define ISSPACE(chr) ((chr) == '\0' || isspace(chr))#define ishnchr(c) (isalnum(c) || (c) == '-')#define isfqhnchr(c) (ishnchr(c) || (c) == '.')#define NEWP(type, num) (type *) malloc_forced((num) * sizeof(type))#define RENEWP(old, type, num) (type *) realloc_forced((old), (num) * sizeof(type))#define SNEWP(type, num) (type *) seg_malloc((num) * sizeof(type))#define SRENEWP(old, type, num, onum) (type *) seg_realloc(old, \ sizeof(type) * (num), \ sizeof(type) * (onum))#define ZRENEWP RENEWP /* realloc_forced already handles NULL */#define ZSRENEWP SRENEWP /* seg_realloc as well */#define ZFREE(ptr) { if(ptr) { free(ptr); ptr = NULL; } }#define forever for(;;)#define SETZERO(var) memset(&(var), 0, sizeof(var))#define COPYVAL(dest, src) memcpy(&(dest), &(src), sizeof(src))#ifndef XOR#define XOR(a,b) (((a) & ~(b)) | (~(a) & (b)))#endiftypedef struct _key_value_pair_ { UChar *key; UChar *value;} KeyValuePair;#define KeyValue KeyValuePair#ifdef __cplusplusextern "C" {#endifextern void * MALLOC_SAFE(Int32);extern void * REALLOC_SAFE(void *, Int32);extern UChar * STRDUP_SAFE(UChar *);extern Int32 FSEEK_SAFE(FILE *, Int32, Int32);extern FILE * FOPEN_SAFE(UChar *, UChar *);extern void nomemmsgexit(void *, FILE *);extern UChar * strapp(UChar *, UChar *);extern UChar * strchain(UChar *, ...);#ifdef DEF_STRRSTRextern UChar * strrstr(UChar *, UChar *);#endif#ifdef DEF_STRCASESTRextern UChar * strcasestr(UChar *, UChar *);#endifextern UChar * strword(UChar *, Int32);extern UChar * strwordq(UChar *, Int32);extern Int32 strint(UChar *, Int32 *);extern int trailingint(UChar *);extern Flag chop(UChar *);extern UChar * word_skip(UChar *, Int32, Int32);#define word_start(str, num) word_skip((str), (num), 1)#define word_end(str, num) word_skip((str), (num), -1)extern Int32 str2words(UChar ***, UChar *);extern Int32 str2wordsq(UChar ***, UChar *);extern Int32 cmd2argv(char ***, char *);extern Int32 cmd2argvq(char ***, char *);extern Int32 cmd2argvf(char ***, char *);extern Int32 cmd2argvqf(char ***, char *);extern void repl_esc_seq(UChar *, UChar);extern Int32 rm_backspace(UChar *);extern UChar * mk_esc_seq(UChar *, UChar, UChar *);extern UChar * repl_substring(UChar *, UChar *, UChar *);extern Int32 repl_substrings(UChar **, ReplSpec *, Int32);extern Int32 existfile(UChar *);extern Int32 memswap(void *, void *, Int32);extern UChar * memfind(UChar *, Int32, UChar *, Int32);extern Int32 memrepl(UChar *, Int32, UChar *, Int32, UChar *, Int32);extern void * mem_move(void *, void *, size_t);extern void * mem_move2(void *, void *, size_t);extern void * mem_move3(void *, void *, size_t);extern void * mem_move4(void *, void *, size_t);extern Int32 fscanword(FILE *, UChar *);extern Int32 fscanwordq(FILE *, UChar *);extern UChar * sscanword(UChar *, UChar *);extern UChar * sscanwordq(UChar *, UChar *);extern Int32 fprintwordq(FILE *, UChar *);extern Int32 sprintwordq(UChar *, UChar *);extern Int32 ffindword(FILE *, UChar *);extern Int32 ffindwordb(FILE *, UChar *);extern Int8 escaped(UChar *, UChar *, UChar);extern Uns8 parity_byte(UChar *, Int32);extern Int32 ishn(UChar *);extern Int32 isfqhn(UChar *);extern Int32 minmax(Real64 *, Int32, Real64 *, Real64 *);extern Int32 ffindchr(FILE *, UChar);extern Int32 getinchr(UChar *, Uns32);extern Int32 word_count(UChar *);extern Int32 word_countq(UChar *);extern Int32 empty_string(UChar *);extern UChar * first_space(UChar *);extern UChar * first_nospace(UChar *);extern UChar * sscancstr(UChar *, UChar *);extern void sscancchars(UChar *, UChar *);extern void massage_string(UChar *);extern UChar **read_asc_file(UChar *, Int32 *);extern UChar **empty_asc_file();extern void free_asc_file(UChar **, Int32);extern Int32 write_asc_file(UChar *, UChar **, Int32);extern Int32 write_asc_file_safe(UChar *, UChar **, Int32);#define free_array free_asc_fileextern Uns32Range *empty_Uns32Ranges();extern Flag in_Uns32Ranges(Uns32Range *, Int32);extern Flag overlap_Uns32Ranges(Uns32Range *, Uns32Range *);extern Int32 next_in_Uns32Ranges(Uns32Range *, Int32, Flag);extern Int32 prev_in_Uns32Ranges(Uns32Range *, Int32, Flag);extern Uns32Range *sscan_Uns32Ranges(UChar *, Int32, Int32, Int32 *, UChar **);extern Uns32Range *sscan_Uns32Ranges_(UChar *, Int32, Int32, Int32 *, UChar **);extern Uns32Range *sscan_Uns32Ranges__(UChar *, Int32, Int32, Int32 *, UChar **);extern Int32 fprint_Uns32Ranges(FILE *, Uns32Range *, Int32);extern Int32 pack_Uns32Ranges(Uns32Range *, Int32 *);extern Int32 len_Uns32Ranges(Uns32Range *);extern Int32 num_Uns32Ranges(Uns32Range *);extern Uns32Range *add_to_Uns32Ranges(Uns32Range *, Int32, Int32);extern Int32 merge_Uns32Ranges(Uns32Range **, Uns32Range *);extern UChar *str_Uns32Ranges(Uns32Range *, Int32);extern Uns32Range *del_one_from_Uns32Ranges(Uns32Range *, Int32);extern Uns32Range *del_range_from_Uns32Ranges(Uns32Range *, Uns32Range *);extern Uns32Range *common_Uns32Ranges(Uns32Range *, Uns32Range *);extern Uns32Range *dup_Uns32Ranges(Uns32Range *);extern Int32 foreach_Uns32Ranges(Uns32Range *, Int32 (*)(Int32, void *), void *);extern void q_sort(void *, Uns32, Uns32, Int32 (*)(void *, void *));extern void *b_search(void *, void *, Uns32, Uns32, Int32 (*)(void *, void *));extern void *b_locate(void *, void *, Uns32, Uns32, Int32 (*)(void *, void *));extern void *ba_search(void *, void *, Uns32, Uns32, Int32 (*)(void *, void *));extern void *l_search(void *, void *, Uns32 *, Uns32, Int32 (*)(void *, void *));extern void *l_find(void *, void *, Uns32 *, Uns32, Int32 (*)(void *, void *));extern UChar char64(Int32);extern Int32 cmp_Int32(void *, void *);extern Int32 cmp_Int16(void *, void *);extern Int32 cmp_Int8(void *, void *);extern Int32 cmp_SChar(void *, void *);extern Int32 cmp_Uns32(void *, void *);extern Int32 cmp_Uns16(void *, void *);extern Int32 cmp_Uns8(void *, void *);extern Int32 cmp_UChar(void *, void *);extern Int32 cmp_UCharPTR(void *, void *);#define cmp_SCharPTR cmp_UCharPTRextern Int32 cmp_Uns32Ranges(void *, void *);extern Int32 compare_version_strings(UChar *, UChar *);extern void *seg_malloc(Int32);extern void *seg_realloc(void *, Int32, Int32);extern Int32 __internal_sm_import(void ***, Int8 **, Int32 *, Int8, void *);extern void *__internal_sm_malloc(void ***, Int8 **, Int32 *, Int8, size_t);extern void *__internal_sm_realloc(void ***, Int8 **, Int32 *, void *, Int8, size_t);extern void __internal_sm_freeall(void **, Int8 *, Int32, Int8);extern void __internal_sm_free(void **, Int8 *, Int32 *, void *);extern UChar *__internal_sm_strdup(void ***, Int8 **, Int32 *, Int8, UChar *);extern UChar *__internal_sm_strapp(void ***, Int8 **, Int32 *, Int8, UChar *, UChar *);extern UChar *__internal_sm_strchain(void ***, Int8 **, Int32 *, Int8, ...);extern UChar *fget_alloc_str(FILE *);extern Int32 fget_realloc_str(FILE *, UChar **, Int32 *);extern Int32 wait_for_input(int, Int32);extern Int32 read_with_timeout(int, UChar *, Int32, Int32);extern Int32 find_zero(Real64 (*)(Real64), Real64, Real64, Real64, Real64, Real64 *);extern Real64 num_integ(Real64 (*)(Real64), Real64, Real64, Real64);extern Real64 Real64_precision();extern Real64 drandom();extern int permutate(void *, size_t, size_t, int (*)(void *, int, void *), void *);extern Int32 goptions(Int32, UChar **, UChar *, ...);extern double r_int(double);extern int is_nan(float);extern Int32 align_n(Int32, Int32);extern void clr_timer();extern UChar *actimestr();extern time_t time_from_datestr(UChar *);extern time_t strint2time(UChar *);extern int fork_forced();extern void * malloc_forced(size_t);extern void * realloc_forced(void *, size_t);extern Int32 write_forced(int, UChar *, Int32);extern Int32 read_forced(int, UChar *, Int32);extern Int32 fscanwordq_forced(FILE *, UChar *);extern pid_t waitpid_forced(pid_t, int *, int);extern int set_wlock(UChar *);extern int set_rlock(UChar *);extern int set_wlock_forced(UChar *);extern int set_rlock_forced(UChar *);extern int set_wlock_timeout(UChar *, Int32);extern UChar *Real64_to_intstr(Real64, UChar *);extern UChar *time_t_to_intstr(time_t, UChar *);extern UChar *size_t_to_intstr(size_t, UChar *);extern UChar *off_t_to_intstr(off_t, UChar *);extern UChar *ino_t_to_intstr(ino_t, UChar *);extern Int32 stringlist_combine(UChar ***, UChar **);extern Int32 stringlist_common(UChar ***, UChar **);extern Int32 stringlist_remove(UChar ***, UChar **);extern Int32 stringlist_num(UChar **);extern Int32 stringlist_totallen(UChar **);#define stringlist_free free_asc_fileextern UChar *stringlist_catall(UChar **, UChar *);extern Int32 stringlist_contlines(UChar **, UChar);extern Int32 ugids_from_str(UChar *, uid_t *, gid_t *, int *, gid_t **);extern UChar *str_from_ugids(uid_t, gid_t, int, gid_t *);extern Int32 set_var(KeyValue **, UChar *, UChar *);extern Int32 unset_var(KeyValue *, UChar *);extern UChar *get_var(KeyValue *, UChar *, Flag);extern Int32 num_vars(KeyValue *);extern UChar *repl_vars(UChar *, KeyValue *);extern Int32 set_named_data(KeyValue **, UChar *, void *, size_t);extern void *get_named_data(KeyValue *, UChar *, Flag, size_t *);#define unset_named_data unset_var#define num_named_data num_vars#ifdef __cplusplus}#endif#ifdef DEF_MEMMOVE#define memmove mem_move#endif#ifdef DEF_QSORT#define qsort q_sort#endif#ifdef DEF_BSEARCH#define bsearch b_search#endif#ifdef DEF_LSEARCH#define lsearch l_search#endif#ifdef DEF_LFIND#define lfind l_find#endif#if defined(DEF_ISNAN) && !defined(isnan)#define isnan is_nan#endif#ifdef DEF_RINT#define rint r_int#endif#ifdef DEF_ISATTY#define isatty is_a_tty#endif#define sm_list void ** __local_memlist = NULL; \ Int8 * __local_smflags = NULL; \ Int32 __num_memptrs = 0#define sm_import(ptr) __internal_sm_import(& __local_memlist, \ & __local_smflags, & __num_memptrs, 0, ptr)#define sm_import_tmp(ptr) __internal_sm_import(& __local_memlist, \ & __local_smflags, & __num_memptrs, 1, ptr)#define sm_malloc(size) __internal_sm_malloc(& __local_memlist, \ & __local_smflags, & __num_memptrs, 0, (size))#define sm_malloc_tmp(size) __internal_sm_malloc(& __local_memlist, \ & __local_smflags, & __num_memptrs, 1, (size))#define sm_realloc(ptr, size) __internal_sm_realloc( \ & __local_memlist,& __local_smflags, & __num_memptrs, \ (ptr), 0, (size))#define sm_realloc_tmp(ptr, size) __internal_sm_realloc( \ & __local_memlist, & __local_smflags, & __num_memptrs, \ (ptr), 1, (size))#define sm_return(arg) { __internal_sm_freeall(__local_memlist, \ __local_smflags, __num_memptrs, 1); return(arg); }#define sm_return_err(arg) { __internal_sm_freeall(__local_memlist, \ __local_smflags, __num_memptrs, 0); return(arg); }#define sm_return_void { __internal_sm_freeall(__local_memlist, \ __local_smflags, __num_memptrs, 1); return; }#define sm_return_err_void { __internal_sm_freeall(__local_memlist, \ __local_smflags, __num_memptrs, 0); return; }#define sm_free(ptr) __internal_sm_free(__local_memlist, \ __local_smflags, & __num_memptrs, ptr)#define sm_strdup(str) __internal_sm_strdup(& __local_memlist, \ & __local_smflags, & __num_memptrs, 0, (str))#define sm_strdup_tmp(str) __internal_sm_strdup(& __local_memlist, \ & __local_smflags, & __num_memptrs, 1, (str))#define sm_strapp(s1, s2) __internal_sm_strapp(& __local_memlist, \ & __local_smflags, & __num_memptrs, 0, (s1), (s2))#define sm_strapp_tmp(s1, s2) __internal_sm_strapp(& __local_memlist, \ & __local_smflags, & __num_memptrs, 1, (s1), (s2))#define NEWSP(type, num) (type *) sm_malloc((num) * sizeof(type))#define NEWSTP(type, num) (type *) sm_malloc_tmp((num) * sizeof(type))#define RENEWSP(old, type, num) (type *) sm_realloc(old, (num) * sizeof(type))#define RENEWSTP(old, type, num) (type *) \ sm_realloc_tmp(old, (num) * sizeof(type))#define ZRENEWSP(old, type, num) \ ((old) ? RENEWSP(old, type, num) : NEWSP(type, num))#define ZRENEWSTP(old, type, num) \ ((old) ? RENEWSTP(old, type, num) : NEWSTP(type, num))#define free_string_array free_asc_file#ifndef bzero#define bzero(mem, size) memset((mem), 0, (size))#endif#ifndef bcopy#define bcopy(mem1, mem2, size) memcpy((mem2), (mem1), (size))#endif#ifndef bcmp#define bcmp(mem1, mem2, size) memcmp((mem1), (mem2), (size))#endif#define bswap(mem1, mem2, size) memswap((mem1), (mem2), (size))#ifndef MAX#define MAX(a, b) ((a) > (b) ? (a) : (b))#endif#ifndef MIN#define MIN(a, b) ((a) < (b) ? (a) : (b))#endif#ifndef ABS#define ABS(a) ((a) < 0 ? - (a) : (a))#endif#ifndef SIGN#define SIGN(a) ((a) > 0 ? 1 : ((a) < 0 ? -1 : 0))#endif#ifdef YES#undef YES#endif#ifdef NO#undef NO#endif#ifdef TRUE#undef TRUE#endif#ifdef FALSE#undef FALSE#endif#define TRUE 1#define FALSE 0#define YES TRUE#define NO FALSE#define DONT_KNOW 127#define UNSPECIFIED_TIME ((time_t) -1)#define endof(staticarr) ((staticarr) + sizeof(staticarr))#define UnsN_to_xref(p, v, n) { Uns32 va_; UChar *buf_; \ buf_ = (p) + (((n) - 1) >> 3); \ va_ = (v); while(buf_ >= (p)){ \ *(buf_--) = (va_ & 0xff); va_ >>= 8;}}#define xref_to_UnsN(v, p, n) { UChar *endb_, *buf_; buf_ = (p); \ endb_ = buf_ + (((n) - 1) >> 3) + 1; \ *(v) = 0; while(buf_ < endb_) \ *(v) = (*(v) << 8) | *(buf_++); }#define Uns32_to_xref(p, v) UnsN_to_xref(p, v, 32)#define xref_to_Uns32(v, p) xref_to_UnsN(v, p, 32)#define str_to_intN(type, result, str) { \ type r = 0; char * cp; \ cp = (str); \ while(*cp && isspace(*cp)) cp++; \ while(isdigit(*cp)) \ r = r * 10 + (*(cp++)) - '0'; \ *(result) = r; }#endif /* !__GENUTILS_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -