diff options
Diffstat (limited to 'ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/util.h')
-rw-r--r-- | ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/util.h | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/util.h b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/util.h new file mode 100644 index 00000000000..f710ffc2530 --- /dev/null +++ b/ACE/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/util.h @@ -0,0 +1,205 @@ +/* + * $Id$ + * + * Copyright (c) 1994, 1995. Netscape Communications Corporation. All + * rights reserved. + * + * Use of this software is governed by the terms of the license agreement for + * the Netscape Communications or Netscape Comemrce Server between the + * parties. + */ + + +/* ------------------------------------------------------------------------ */ + + +/* + * util.h: A hodge podge of utility functions and standard functions which + * are unavailable on certain systems + * + * Rob McCool + */ + + +#ifndef HTTPD_UTIL_H +#define HTTPD_UTIL_H + +#include "buffer.h" /* filebuf for getline */ + +#include <time.h> /* struct tm */ + + +/* ------------------------------ Prototypes ------------------------------ */ + + +/* + * getline scans in buf until it finds a LF or CRLF, storing the string in + * l. It will terminate the string and return: + * + * 0 when done, with the scanned line (minus CR or LF) in l + * 1 upon EOF, with the scanned line (minus CR or LF) in l + * -1 on error with the error description in l (uses lineno for information) + */ + +int util_getline(filebuf *buf, int lineno, int maxlen, char *l); + + +/* + * can_exec returns 1 if you can execute the file described by finfo, and + * 0 if you can't. + */ + +#ifdef XP_UNIX +#include <sys/stat.h> +#include <sys/types.h> + +int util_can_exec(struct stat *finfo, uid_t uid, gid_t gid); + +#endif /* XP_UNIX */ +/* + * env_create creates a new environment with the given env, with n new + * entries, and places the current position that you should add your + * entries with at pos. + * + * If env is NULL, it will allocate a new one. If not, it will reallocate + * that one. + */ + +char **util_env_create(char **env, int n, int *pos); + +/* + * util_env_str allocates a string from the given name and value and + * returns it. It does not check for things like = signs in name. + */ + +char *util_env_str(char *name, char *value); + +/* + * env_replace replaces the occurrence of the given variable with the + * value you give. + */ + +void util_env_replace(char **env, char *name, char *value); + +/* + * util_env_free frees an environment. + */ + +void util_env_free(char **env); + +/* + * util_env_find looks through env for the named string. Returns the + * corresponding value if the named string is found, or NULL if not. + */ +char *util_env_find(char **env, char *name); + + +/* + * hostname gets the local hostname. Returns NULL if it can't find a FQDN. + * You are free to realloc or free this string. + */ + +char *util_hostname(void); + + +/* + * chdir2path changes the current directory to the one that the file + * path is in. path should point to a file. Caveat: path must be a writable + * string. It won't get modified permanently. + */ + +int util_chdir2path(char *path); + +/* + * is_mozilla checks if the given user-agent is mozilla, of at least + * the given major and minor revisions. These are strings to avoid + * ambiguities like 1.56 > 1.5 + */ + +int util_is_mozilla(char *ua, char *major, char *minor); + +/* + * is_url will return 1 if the given string seems to be a URL, or will + * return 0 otherwise. + * + * Because of stupid news URLs, this will return 1 if the string has + * all alphabetic characters up to the first colon and will not check for + * the double slash. + */ + +int util_is_url(char *url); + +/* + * util_later_than checks the date in the string ims, and if that date is + * later than or equal to the one in the tm struct lms, then it returns 1. + * + * Handles RFC 822, 850, and ctime formats. + */ + +int util_later_than(struct tm *lms, char *ims); + + +/* + * util_uri_is_evil returns 1 if a URL has ../ or // in it. + */ +int util_uri_is_evil(char *t); + +/* + * util_uri_parse gets rid of /../, /./, and //. + * + * Assumes that either the string starts with a /, or the string will + * not .. right off of its beginning. As such, ../foo.gif will + * not be changed, although /../foo.gif will become /foo.gif. + */ + +void util_uri_parse(char *uri); + +/* + * util_uri_unescape unescapes the given URI in place (% conversions only). + */ + +void util_uri_unescape(char *s); + +/* + * util_uri_escape escapes any nasty chars in s and copies the string into d. + * If d is NULL, it will allocate and return a properly sized string. + * Warning: does not check bounds on a given d. + * + * util_url_escape does the same thing but does it for a url, i.e. ?:+ is + * not escaped. + */ + +char *util_uri_escape(char *d, char *s); +char *util_url_escape(char *d, char *s); + +/* + * util_sh_escape places a \ in front of any shell-special characters. + * Returns a newly-allocated copy of the string. + */ + +char *util_sh_escape(char *s); + +/* + * util_itoa converts the given integer to a string into a. + */ + +int util_itoa(int i, char *a); + +/* + * util_vsprintf and util_sprintf are simplified clones of the System V + * vsprintf and sprintf routines. + * + * Returns the number of characters printed. Only handles %d and %s, + * does not handle any width or precision. + */ + +#include <stdarg.h> + +int util_vsprintf(char *s, register char *fmt, va_list args); +int util_sprintf(char *s, char *fmt, ...); + +/* These routines perform bounds checks. */ +int util_vsnprintf(char *s, int n, register char *fmt, va_list args); +int util_snprintf(char *s, int n, char *fmt, ...); + +#endif |