Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 10 | reyssat | 1 | /* Copyright (C) 1998-2003 XIAO, Gang of Universite de Nice - Sophia Antipolis |
| 2 | * |
||
| 3 | * This program is free software; you can redistribute it and/or modify |
||
| 4 | * it under the terms of the GNU General Public License as published by |
||
| 5 | * the Free Software Foundation; either version 2 of the License, or |
||
| 6 | * (at your option) any later version. |
||
| 7 | * |
||
| 8 | * This program is distributed in the hope that it will be useful, |
||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||
| 11 | * GNU General Public License for more details. |
||
| 12 | * |
||
| 13 | * You should have received a copy of the GNU General Public License |
||
| 14 | * along with this program; if not, write to the Free Software |
||
| 15 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
||
| 16 | */ |
||
| 17 | |||
| 18 | /* WWW multipurpose server, dynamic library definitions */ |
||
| 19 | |||
| 7844 | bpr | 20 | /* errors.c */ |
| 10 | reyssat | 21 | void (*error1) (char *msg); |
| 22 | void (*error2) (char *msg); |
||
| 23 | void (*error3) (char *msg); |
||
| 24 | |||
| 7844 | bpr | 25 | /* lines.c */ |
| 10 | reyssat | 26 | char *int2str(int i); |
| 27 | void *xmalloc(size_t n); |
||
| 7844 | bpr | 28 | int msleep(int ms); /* millisecond sleeper */ |
| 29 | void _tolinux(char *p); /* dos/mac to unix/linux translation */ |
||
| 30 | void mystrncpy(char *dest, const char *src, size_t lim); /* optimized and secured strncpy */ |
||
| 31 | /* find matching parenthesis. |
||
| 32 | * The entrance point should be after the opening parenthesis. |
||
| 33 | * Returns NULL if unmatched< |
||
| 34 | */ |
||
| 10 | reyssat | 35 | char *find_matching(char *p, char c); |
| 7844 | bpr | 36 | char *find_word_start(char *p); /* Strips leading spaces */ |
| 37 | char *find_word_end(char *p); /* Points to the end of the word */ |
||
| 38 | char *strparchr(char *p, char c); /* search for char, skipping parentheses */ |
||
| 39 | char *strparstr(char *p, char *fnd); /* search for string, skipping parentheses */ |
||
| 40 | char *find_item_end(char *p); /* Points to the end of an item */ |
||
| 41 | char *find_line_end(char *p); /* Points to the end of a line */ |
||
| 10 | reyssat | 42 | char *charchr(char *p,char *w); |
| 7844 | bpr | 43 | char *wordchr(char *p, char *w); /* Find first occurrence of word */ |
| 44 | char *itemchr(char *p, char *w); /* Find first occurrence of item */ |
||
| 45 | char *linechr(char *p, char *w); /* Find first occurrence of line */ |
||
| 46 | char *varchr(char *p, char *v); /* Find first occurrence of math variable */ |
||
| 47 | int cutitems(char *p, char *list[], int max); /* Cut items of a string */ |
||
| 48 | int cutwords(char *p, char *list[], int max); /* Cut words of a string */ |
||
| 49 | int cutlines(char *p, char *list[], int max); /* Cut lines of a string */ |
||
| 50 | int cutchars(char *p, char *list[], int max); /* Cut chars of a string */ |
||
| 51 | char *strip_trailing_spaces(char *p); /* strip trailing spaces; return string end. */ |
||
| 52 | /* Verify whether a list is well-ordered. For debugging uses. |
||
| 53 | * Returns 0 if order is OK, -1 otherwise. |
||
| 54 | */ |
||
| 10 | reyssat | 55 | int verify_order(void *list, int items, size_t item_size); |
| 7844 | bpr | 56 | /* searches a list. Returns index if found, -1 if nomatch. |
| 57 | * Uses binary search, list must be sorted. |
||
| 58 | */ |
||
| 10 | reyssat | 59 | int search_list(void *list, int items, size_t item_size, const char *str); |
| 7844 | bpr | 60 | unsigned int linenum(char *p); /* Returns number of lines in string p */ |
| 61 | unsigned int itemnum(char *p); /* Returns number of items in the list p, comma separated */ |
||
| 62 | unsigned int wordnum(char *p); /* Returns number of words in string p */ |
||
| 63 | unsigned int charnum(char *p); /* This is just to suppress an annoying compiler warning message. */ |
||
| 10 | reyssat | 64 | char *fnd_line(char *p, int n, char bf[]); /* find n-th line in string p */ |
| 65 | char *fnd_item(char *p, int n, char bf[]); /* find n-th item in list p, comma separated */ |
||
| 66 | char *fnd_word(char *p, int n, char bf[]); /* find n-th word in string p */ |
||
| 67 | char *fnd_char(char *p, int n, char bf[]); /* find n-th char in string p */ |
||
| 68 | char *fnd_row(char *p, int n, char bf[]); /* find n-th row in a matrix p */ |
||
| 7844 | bpr | 69 | /* Separate items in the string p, end each item with 0, |
| 70 | * and store item pointers in parm[]. Does not parse past max. |
||
| 71 | * Returns the number of fields. |
||
| 72 | */ |
||
| 10 | reyssat | 73 | int separate_item(char *p, char *parm[], int max); |
| 74 | int separate_line(char *p, char *parm[], int max); |
||
| 75 | int separate_word(char *p, char *parm[], int max); |
||
| 76 | int _separator(char *p,char *parm[], int max, char fs); |
||
| 7844 | bpr | 77 | int rows2lines(char *p); /* Returns 1 if semicolons changed to new lines */ |
| 10 | reyssat | 78 | void lines2rows(char *p); |
| 79 | unsigned int rownum(char *p); |
||
| 7844 | bpr | 80 | void words2items(char *p); /* change words to items */ |
| 81 | void words2lines(char *p); /* change words to lines */ |
||
| 82 | void lines2items(char *p); /* change lines to items */ |
||
| 83 | void lines2words(char *p); /* change lines to words */ |
||
| 84 | void items2words(char *p); /* change items to words */ |
||
| 85 | void items2lines(char *p); /* change items to lines */ |
||
| 86 | void strip_enclosing_par(char *p); /* Strip enclosing pairs of parentheses */ |
||
| 87 | /* strstr but may have embedde deros. |
||
| 88 | * Returns memory end if not found. |
||
| 89 | * Supposes memory ends with 0. |
||
| 90 | */ |
||
| 10 | reyssat | 91 | char *memstr(char *s1, char *s2, int len); |
| 7844 | bpr | 92 | /* Check whether parentheses are balanced in a given string. |
| 93 | * Returns 0 if OK. |
||
| 94 | */ |
||
| 95 | /* style=0: simple check. style<>0: strong check. */ |
||
| 10 | reyssat | 96 | int check_parentheses(char *p, int style); |
| 7844 | bpr | 97 | void nospace(char *p); /* collapses all space characters in string. */ |
| 98 | void singlespace(char *p); /* change all spaces into ' ', and collapse multiple occurences */ |
||
| 99 | void deaccent(char *p); /* fold accented letters to unaccented */ |
||
| 100 | void reaccent(char *p); /* compose accented letters using symbols */ |
||
| 101 | /* modify a string. Bufferlen must be at least MAX_LINELEN */ |
||
| 8086 | bpr | 102 | extern void (*string_modify)(char *start, char *bad_beg, char *bad_end, char *good,...); |
| 10 | reyssat | 103 | long int filelength(char *fn,...); |
| 104 | int catfile(FILE *outf, char *fn,...); |
||
| 105 | char *fnd_position; |
||
| 106 | char *fnd_nextpos; |
||
| 107 | |||
| 108 | /* My accelerated definitions. */ |
||
| 109 | #define myisdigit(x) (x>='0' && x<='9') |
||
| 110 | #define myisalpha(x) ((x&~32)>='A' && (x&~32)<='Z') |
||
| 111 | #define myisalnum(x) (myisalpha(x) || myisdigit(x)) |
||
| 112 | #define myisupper(x) (x>='A' && x<='Z') |
||
| 113 | #define myislower(x) (x>='a' && x<='z') |
||
| 114 | #define myislspace(x) (x==' ' || x=='\t') |
||
| 115 | #define myisspace(x) (x==' ' || x=='\t' || x=='\n' || x=='\r') |