Blame bibutils/str.h

Packit 89ede9
/*
Packit 89ede9
 * str.h
Packit 89ede9
 *
Packit 89ede9
 * Version: 2017-07-03
Packit 89ede9
 *
Packit 89ede9
 * Copyright (c) Chris Putnam 1999-2018
Packit 89ede9
 *
Packit 89ede9
 * Source code released under the GPL version 2
Packit 89ede9
 *
Packit 89ede9
 */
Packit 89ede9
#ifndef STR_H
Packit 89ede9
#define STR_H
Packit 89ede9
Packit 89ede9
#include <stdio.h>
Packit 89ede9
Packit 89ede9
typedef struct str {
Packit 89ede9
	char *data;
Packit 89ede9
	unsigned long dim;
Packit 89ede9
	unsigned long len;
Packit 89ede9
}  str;
Packit 89ede9
Packit 89ede9
str *  str_new         ( void );
Packit 89ede9
void   str_delete      ( str *s );
Packit 89ede9
Packit 89ede9
void   str_init        ( str *s );
Packit 89ede9
void   str_initstr     ( str *s, str *from );
Packit 89ede9
void   str_initstrc    ( str *s, const char *initstr );
Packit 89ede9
void   str_initstrsc   ( str *s, ... );
Packit 89ede9
void   str_empty       ( str *s );
Packit 89ede9
void   str_free        ( str *s );
Packit 89ede9
Packit 89ede9
void   strs_init       ( str *s, ... );
Packit 89ede9
void   strs_empty      ( str *s, ... );
Packit 89ede9
void   strs_free       ( str *s, ... );
Packit 89ede9
Packit 89ede9
str*   str_strdup ( str *s );
Packit 89ede9
str*   str_strdupc( const char *p );
Packit 89ede9
Packit 89ede9
void   str_strcat ( str *s, str *from );
Packit 89ede9
void   str_strcatc( str *s, const char *from );
Packit 89ede9
Packit 89ede9
void   str_strcpy ( str *s, str *from );
Packit 89ede9
void   str_strcpyc( str *s, const char *from );
Packit 89ede9
Packit 89ede9
int    str_strcmp ( const str *s, const str *t );
Packit 89ede9
int    str_strcmpc( const str *s, const char *t );
Packit 89ede9
Packit 89ede9
int    str_strncmp ( const str *s, const str *t,  size_t n );
Packit 89ede9
int    str_strncmpc( const str *s, const char *t, size_t n );
Packit 89ede9
Packit 89ede9
int    str_strcasecmp ( const str *s, const str *t );
Packit 89ede9
int    str_strcasecmpc( const str *s, const char *t );
Packit 89ede9
Packit 89ede9
char * str_strstr ( const str *s, const str *t );
Packit 89ede9
char * str_strstrc( const str *s, const char *t );
Packit 89ede9
Packit 89ede9
void str_prepend     ( str *s, const char *addstr );
Packit 89ede9
void str_mergestrs   ( str *s, ... );
Packit 89ede9
Packit 89ede9
void str_addchar     ( str *s, char newchar );
Packit 89ede9
void str_reverse     ( str *s );
Packit 89ede9
const char *str_addutf8    ( str *s, const char *p );
Packit 89ede9
void str_segcat      ( str *s, char *startat, char *endat );
Packit 89ede9
char *str_cpytodelim  ( str *s, char *p, const char *delim, unsigned char finalstep );
Packit 89ede9
char *str_cattodelim  ( str *s, char *p, const char *delim, unsigned char finalstep );
Packit 89ede9
void str_prepend     ( str *s, const char *addstr );
Packit 89ede9
void str_segcpy      ( str *s, char *startat, char *endat );
Packit 89ede9
void str_segdel      ( str *s, char *startat, char *endat );
Packit 89ede9
void str_indxcpy     ( str *s, char *p, unsigned long start, unsigned long stop );
Packit 89ede9
void str_indxcat     ( str *s, char *p, unsigned long start, unsigned long stop );
Packit 89ede9
void str_fprintf     ( FILE *fp, str *s );
Packit 89ede9
int  str_fget        ( FILE *fp, char *buf, int bufsize, int *pbufpos,
Packit 89ede9
                          str *outs );
Packit 89ede9
char * str_cstr      ( str *s );
Packit 89ede9
char str_char        ( str *s, unsigned long n );
Packit 89ede9
char str_revchar     ( str *s, unsigned long n );
Packit 89ede9
int  str_fgetline    ( str *s, FILE *fp );
Packit 89ede9
int  str_findreplace ( str *s, const char *find, const char *replace );
Packit 89ede9
void str_toupper     ( str *s );
Packit 89ede9
void str_tolower     ( str *s );
Packit 89ede9
void str_trimstartingws( str *s );
Packit 89ede9
void str_trimendingws( str *s );
Packit 89ede9
void str_swapstrings ( str *s1, str *s2 );
Packit 89ede9
void str_stripws     ( str *s );
Packit 89ede9
Packit 89ede9
int  str_match_first ( str *s, char ch );
Packit 89ede9
int  str_match_end   ( str *s, char ch );
Packit 89ede9
void str_trimbegin   ( str *s, unsigned long n );
Packit 89ede9
void str_trimend     ( str *s, unsigned long n );
Packit 89ede9
Packit 89ede9
void str_pad         ( str *s, unsigned long len, char ch );
Packit 89ede9
void str_copyposlen  ( str *s, str *in, unsigned long pos, unsigned long len );
Packit 89ede9
Packit 89ede9
void str_makepath    ( str *path, const char *dirname, const char *filename, char sep );
Packit 89ede9
Packit 89ede9
void str_fill        ( str *s, unsigned long n, char fillchar );
Packit 89ede9
Packit 89ede9
int  str_is_mixedcase( str *s );
Packit 89ede9
int  str_is_lowercase( str *s );
Packit 89ede9
int  str_is_uppercase( str *s );
Packit 89ede9
Packit 89ede9
int  str_memerr( str *s );
Packit 89ede9
Packit 89ede9
unsigned long str_strlen( str *s );
Packit 89ede9
Packit 89ede9
int  str_has_value( str *s );
Packit 89ede9
int  str_is_empty( str *s );
Packit 89ede9
Packit 89ede9
Packit 89ede9
/* #define STR_PARANOIA
Packit 89ede9
 *
Packit 89ede9
 * set to clear memory before it is freed or reallocated
Packit 89ede9
 * note that this is slower...may be important if string
Packit 89ede9
 * contains sensitive information
Packit 89ede9
 */
Packit 89ede9
Packit 89ede9
/* #define STR_NOASSERT
Packit 89ede9
 *
Packit 89ede9
 * set to turn off the use of asserts (and associated call to exit)
Packit 89ede9
 * in str functions...useful for library construction for
Packit 89ede9
 * Linux distributions that don't want libraries calling exit, but
Packit 89ede9
 * not useful during code development
Packit 89ede9
 */
Packit 89ede9
Packit 89ede9
#endif
Packit 89ede9