view th_string.h @ 354:c01e42fc9adb

More work on SOCKS proxy support, should work now.
author Matti Hamalainen <>
date Thu, 23 Jun 2011 08:26:48 +0300
parents fae4651d37bc
line wrap: on
line source

 * Miscellaneous string-handling related utility-functions
 * Programmed and designed by Matti 'ccr' Hamalainen
 * (C) Copyright 2002-2011 Tecnic Software productions (TNSP)
 * Please read file 'COPYING' for information on license and distribution.
#ifndef _TH_STRING_H
#define _TH_STRING_H

#ifdef __cplusplus
extern "C" {

#include "th_util.h"
#include <stdlib.h>
#include <ctype.h>
#include <stdarg.h>

/* Macros
#define th_isalnum(c)   isalnum((int)(unsigned char) c)
#define th_isalpha(c)   isalpha((int)(unsigned char) c)
#define th_isascii(c)   isascii((int)(unsigned char) c)
#define th_isblank(c)   isblank((int)(unsigned char) c)
#define th_iscntrl(c)   iscntrl((int)(unsigned char) c)
#define th_isdigit(c)   isdigit((int)(unsigned char) c)
#define th_isgraph(c)   isgraph((int)(unsigned char) c)
#define th_islower(c)   islower((int)(unsigned char) c)
#define th_isprint(c)   isprint((int)(unsigned char) c)
#define th_ispunct(c)   ispunct((int)(unsigned char) c)
#define th_isspace(c)   isspace((int)(unsigned char) c)
#define th_isupper(c)   isupper((int)(unsigned char) c)
#define th_isxdigit(c)  isxdigit((int)(unsigned char) c)
#define th_iscrlf(c)    ((c=='\r')||(c=='\n'))

#define th_isspecial(q) (((q >= 0x5b) && (q <= 0x60)) || ((q >= 0x7b) && (q <= 0x7d)))

#define th_tolower(c)   tolower((int)(unsigned char) c)
#define th_toupper(c)   toupper((int)(unsigned char) c)

/* Normal NUL-terminated string functions
char    *th_strncpy(char *, const char *, size_t);
int     th_strcasecmp(const char *, const char *);
int     th_strncasecmp(const char *, const char *, size_t);
void    th_strip_ctrlchars(char *);

char    *th_strdup_vprintf(const char *, va_list);
char    *th_strdup_printf(const char *, ...);

void    th_pstr_vprintf(char **, const char *, va_list);
void    th_pstr_printf(char **, const char *, ...);

char    *th_strdup(const char *);
int     th_pstrcpy(char **, const char *);
int     th_pstrcat(char **, const char *);

const char    *th_findnext(const char *, size_t *);
const char    *th_findsep(const char *, size_t *, char);
const char    *th_findseporspace(const char *, size_t *, char);

BOOL    th_strmatch(const char *, const char *);
BOOL    th_strcasematch(const char *, const char *);

int     th_get_hex_triplet(const char *);

BOOL    th_growbuf(char **buf, size_t *bufsize, size_t *len, size_t grow);
BOOL    th_vputch(char **buf, size_t *bufsize, size_t *len, const char ch);
BOOL    th_vputs(char **buf, size_t *bufsize, size_t *len, const char *str);

#define TH_BUFGROW       (32)

#ifdef __cplusplus
#endif /* _TH_STRING_H */