123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- /*
- * ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2010 Alexander Barton (alex@barton.de)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- * Please read the file COPYING, README and AUTHORS for more information.
- */
- #include "portab.h"
- /**
- * @file
- * Tool functions
- */
- #include "imp.h"
- #include <assert.h>
- #include <ctype.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <sys/time.h>
- #include <netinet/in.h>
- #ifdef SYSLOG
- #define SYSLOG_NAMES 1
- #include <syslog.h>
- #endif
- #include "exp.h"
- #include "tool.h"
- /**
- * Removes all leading and trailing whitespaces of a string.
- * @param String The string to remove whitespaces from.
- */
- GLOBAL void
- ngt_TrimStr(char *String)
- {
- char *start, *end;
- assert(String != NULL);
- start = String;
- /* Remove whitespaces at the beginning of the string ... */
- while (*start == ' ' || *start == '\t' ||
- *start == '\n' || *start == '\r')
- start++;
- if (!*start) {
- *String = '\0';
- return;
- }
- /* ... and at the end: */
- end = strchr(start, '\0');
- end--;
- while ((*end == ' ' || *end == '\t' || *end == '\n' || *end == '\r')
- && end >= start)
- end--;
- /* New trailing NULL byte */
- *(++end) = '\0';
- memmove(String, start, (size_t)(end - start)+1);
- } /* ngt_TrimStr */
- /**
- * Convert a string to uppercase letters.
- */
- GLOBAL char *
- ngt_UpperStr(char *String)
- {
- char *ptr;
- assert(String != NULL);
- ptr = String;
- while(*ptr) {
- *ptr = toupper((int)*ptr);
- ptr++;
- }
- return String;
- } /* ngt_UpperStr */
- /**
- * Convert a string to lowercase letters.
- */
- GLOBAL char *
- ngt_LowerStr(char *String)
- {
- char *ptr;
- assert(String != NULL);
- ptr = String;
- while(*ptr) {
- *ptr = tolower((int)*ptr);
- ptr++;
- }
- return String;
- } /* ngt_LowerStr */
- GLOBAL void
- ngt_TrimLastChr( char *String, const char Chr)
- {
- /* If last character in the string matches Chr, remove it.
- * Empty strings are handled correctly. */
- size_t len;
- assert(String != NULL);
- len = strlen(String);
- if(len == 0)
- return;
- len--;
- if(String[len] == Chr)
- String[len] = '\0';
- } /* ngt_TrimLastChr */
- /**
- * Fill a String with random chars
- */
- GLOBAL char *
- ngt_RandomStr(char *String, const size_t len)
- {
- static const char chars[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!\"#$&'()*+,-./:;<=>?@[\\]^_`";
- struct timeval t;
- size_t i;
- assert(String != NULL);
- gettimeofday(&t, NULL);
- srand((unsigned)(t.tv_usec * t.tv_sec));
- for (i = 0; i < len; ++i) {
- String[i] = chars[rand() % (sizeof(chars) - 1)];
- }
- String[len] = '\0';
- return String;
- } /* ngt_RandomStr */
- #ifdef SYSLOG
- #ifndef INTERNAL_MARK
- #ifndef _code
- typedef struct _code {
- char *c_name;
- int c_val;
- } CODE;
- #endif
- CODE facilitynames[] = {
- #ifdef LOG_AUTH
- { "auth", LOG_AUTH },
- #endif
- #ifdef LOG_AUTHPRIV
- { "authpriv", LOG_AUTHPRIV },
- #endif
- #ifdef LOG_CRON
- { "cron", LOG_CRON },
- #endif
- #ifdef LOG_DAEMON
- { "daemon", LOG_DAEMON },
- #endif
- #ifdef LOG_FTP
- { "ftp", LOG_FTP },
- #endif
- #ifdef LOG_LPR
- { "lpr", LOG_LPR },
- #endif
- #ifdef LOG_MAIL
- { "mail", LOG_MAIL },
- #endif
- #ifdef LOG_NEWS
- { "news", LOG_NEWS },
- #endif
- #ifdef LOG_UUCP
- { "uucp", LOG_UUCP },
- #endif
- #ifdef LOG_USER
- { "user", LOG_USER },
- #endif
- #ifdef LOG_LOCAL7
- { "local0", LOG_LOCAL0 },
- { "local1", LOG_LOCAL1 },
- { "local2", LOG_LOCAL2 },
- { "local3", LOG_LOCAL3 },
- { "local4", LOG_LOCAL4 },
- { "local5", LOG_LOCAL5 },
- { "local6", LOG_LOCAL6 },
- { "local7", LOG_LOCAL7 },
- #endif
- { 0, -1 }
- };
- #endif
- GLOBAL const char*
- ngt_SyslogFacilityName(int Facility)
- {
- int i = 0;
- while(facilitynames[i].c_name) {
- if (facilitynames[i].c_val == Facility)
- return facilitynames[i].c_name;
- i++;
- }
- return "unknown";
- }
- GLOBAL int
- ngt_SyslogFacilityID(char *Name, int DefaultFacility)
- {
- int i = 0;
- while(facilitynames[i].c_name) {
- if (strcasecmp(facilitynames[i].c_name, Name) == 0)
- return facilitynames[i].c_val;
- i++;
- }
- return DefaultFacility;
- }
- #endif
- /* -eof- */
|