#include #include #include #include #include #ifdef DMALLOC #include #endif #include "config.h" #include "support.h" #include "messages.h" char *mystrdup(const char *s) { char *ret; ret = strdup(s); if(!ret) { fprintf(stderr, M_OUT_OF_MEMORY); exit(EXIT_FAILURE); } return ret; } void *mymalloc(int size) { void *ret; ret = malloc(size); if(!ret) { fprintf(stderr, M_OUT_OF_MEMORY); exit(EXIT_FAILURE); } return ret; } void lc(char *s) { for(;*s;s++) { *s = tolower(*s); } } char *strnum(int num) { static char thenum[100]; sprintf(thenum,"%d",num); return thenum; } char *strmem(const char *orig, int increment) { void *temp; if(orig) { if(!(temp=(char *)malloc(strlen(orig)+increment+1))) { fprintf(stderr,M_OUT_OF_MEMORY); exit(1); } strcpy((char *)temp,orig); } else { if(!(temp=(char *)malloc(increment+1))) { bzero(temp,increment); fprintf(stderr,M_OUT_OF_MEMORY); exit(1); } } return (char *)temp; } extern int ischannel(const char *string) { if((string[0]=='#')||(string[0]=='&')||(string[0]=='+')) return 1; return 0; } extern char *chop(char *string) { string[strlen(string)-1]=0; return string; } #ifndef HAVE_HTONS unsigned short htons(unsigned short n) { return (n%256)*256+n/256; } #endif #ifndef HAVE_STRCASECMP int strcasecmp(char *s, char *t) { int i; for(i=0;tolower(s[i])==tolower(t[i]);i++) if (s[i]==0) return 0; return (tolower(s[i])-tolower(t[i])); } #endif #ifndef HAVE_STRNCASECMP int strncasecmp(char *s, char *t, int n) { int i; if(!n) return 0; for(i=0;tolower(s[i])==tolower(t[i]);i++) if ((s[i]==0)||(i==n-1)) return 0; return (tolower(s[i])-tolower(t[i])); } #endif /* extern void getarg(char *string, char *arg) { if(strstr(string," ")) { strncpy(arg,string,strstr(string," ")-string); strcpy(string,strstr(string," ")+1); while(string[0]==' ') strcpy(string,string+1); } else { strcpy(arg,string); string[0]=0; } } */ extern void parse(char *string, char **prefix, char **command, char **params, int *numparam) { char *position; *numparam=0; if(string[0]==':') { *prefix=string+1; if((position=strstr(string," "))) { *position=0; string=position+1; } else { return; } } if(*string!=0) { while(*string==' ') string++; if(string[0]==':') { *command=string+1; return; } else { *command=string; if((position=strstr(string," "))) { *position=0; string=position+1; } else { return; } } } while(*string!=0) { while(*string==' ') string++; if(string[0]==':') { params[(*numparam)++]=string+1; return; } else { params[(*numparam)++]=string; if((position=strstr(string," "))) { *position=0; string=position+1; } else { return; } } } }