Subversion Repositories wimsdev

Rev

Rev 7844 | Blame | Last modification | View Log | RSS feed

  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.  
  20. /* errors.c */
  21. void (*error1) (char *msg);
  22. void (*error2) (char *msg);
  23. void (*error3) (char *msg);
  24.  
  25. /* lines.c */
  26. char *int2str(int i);
  27. void *xmalloc(size_t n);
  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.  */
  35. char *find_matching(char *p, char c);
  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 */
  42. char *charchr(char *p,char *w);
  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.  */
  55. int verify_order(void *list, int items, size_t item_size);
  56. /* searches a list. Returns index if found, -1 if nomatch.
  57.  * Uses binary search, list must be sorted.
  58.  */
  59. int search_list(void *list, int items, size_t item_size, const char *str);
  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. */
  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 */
  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.  */
  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);
  77. int rows2lines(char *p);      /* Returns 1 if semicolons changed to new lines */
  78. void lines2rows(char *p);
  79. unsigned int rownum(char *p);
  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.  */
  91. char *memstr(char *s1, char *s2, int len);
  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. */
  96. int check_parentheses(char *p, int style);
  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 */
  102. extern void (*string_modify)(char *start, char *bad_beg, char *bad_end, char *good,...);
  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')
  116.