Go to the documentation of this file.
16 #ifndef __OLI_TOOLBOX_LOADED
17 #define __OLI_TOOLBOX_LOADED
39 #define TB_MAX_BUFFER 32767
40 #define TB_MAXLINE 2048
41 #define TB_MAXFNAME 80
42 #define TB_MAXPATH 256
52 #define VmsError(zstatz) (!((zstatz)&1) && zstatz != SS$_ENDOFFILE && zstatz != SS$_ENDOFTAPE)
55 #define RingThatBell(znumz) {int ziz; for (ziz=0; ziz < znumz; ++ziz) (void)printf("%c", (char) 7);}
56 #define CloseMe(zfptrz) {if (zfptrz != NULL) {(void)fclose(zfptrz); zfptrz = NULL;}}
57 #define LemmeGo(zmptrz) {if (zmptrz != NULL) {free(zmptrz); zmptrz = NULL;}}
58 #define SayGoodbye() {(void)printf("I'm out of memory and I can't get up!\n"); exit(1);}
59 #define LastChar(zstrz) (zstrz+strlen(zstrz)-1)
61 #define NewString(zstrz, zsizez) \
63 zstrz = (char *)malloc(1); \
65 zstrz = (char *)malloc(zsizez); \
71 #define CopyString(zstrz, zoldz) \
76 NewString(zstrz, ((long)(1+strlen(zoldz)))) \
77 (void)strcpy(zstrz,zoldz); \
80 #define AppendString(zstrz, znewz) \
84 NewString(zstrz, (long)(1+strlen(znewz))) \
86 zstrz = (char *)realloc(zstrz, 1+strlen(znewz)+strlen(zstrz)); \
90 (void)strcat(zstrz, znewz); \
93 #define StripLeading(zstrz, zstripz) \
95 for (zcz=zstrz; ((*zcz != '\0') && (*zcz == zstripz)); ++zcz) ; \
96 len = strlen(zcz) + 1; \
97 (void)memmove(zstrz, zcz, len);}
99 #define StripTrailing(zstrz, zstripz) \
101 for (zcz=LastChar(zstrz); ((zcz >= zstrz) && (*zcz == zstripz)); --zcz) \
104 #define StripUnprintables(zstrz) \
106 for (zcz=LastChar(zstrz); ((zcz >= zstrz) && ((*zcz < ' ') || (*zcz > '~'))); --zcz) \
109 #define ReplaceChar(zstrz, zoldz, znewz) \
111 for (zcz=zstrz; *zcz != '\0'; ++zcz) \
112 {if (*zcz == zoldz) *zcz = znewz;}}
114 #define NotOneOfThese(zstrz, zsetz) (zstrz + strspn(zstrz, zsetz))
116 #define UpperCase(zstrz) \
118 for (zcz=zstrz; *zcz != '\0'; ++zcz) {*zcz=(char)toupper(*zcz);}}
120 #define LowerCase(zstrz) \
122 for (zcz=zstrz; *zcz != '\0'; ++zcz) {*zcz=(char)tolower(*zcz);}}
124 #define DateTime(zascz) \
126 struct tm *zptrz = {NULL}; \
129 zptrz = localtime(&zltz); \
130 zascz = asctime(zptrz); \
131 zascz[strlen(zascz) -1] = '\0'; \
157 #define RemoveStringList(zlistz) \
159 TB_STRING_LIST *znz, *znnz=NULL; \
160 for (znz=zlistz; znz != NULL; znz=znnz) \
168 #define NewStringList(zstrz, zlistz) \
170 if (zlistz != NULL) RemoveStringList(zlistz) \
171 zlistz = (TB_STRING_LIST *) malloc(sizeof(TB_STRING_LIST)); \
172 zlistz->next = NULL; \
173 if (zlistz == NULL) SayGoodbye() \
175 NewString(zlistz->text, 1) \
177 CopyString(zlistz->text, zstrz) \
180 #define AddStringToList(zstrz, zlistz) \
182 TB_STRING_LIST *znz, *znnz=NULL; \
183 if (zlistz == NULL) \
184 NewStringList(zstrz, zlistz) \
187 for (znz=zlistz; znz->next != NULL; znz=znz->next) ; \
188 NewStringList(zstrz, znnz) \
193 #define AddListToList(zfrom_listz, zto_listz) \
195 TB_STRING_LIST *znz; \
196 if (zto_listz == NULL) \
197 zto_listz = zfrom_listz; \
199 if (zfrom_listz != NULL) \
201 for (znz=zto_listz; znz->next != NULL; znz=znz->next) ; \
202 znz->next = zfrom_listz; \
struct tb_string_list * next