#ifndef UTILS_H_ #define UTILS_H_ #include /***** Enumerations for use with public functions *****/ enum convert_endpoint_t {cept_client=0, cept_server, cept_config, cept_playlist}; enum list_searchmode_t {lsmt_exact=0, lsmt_begins_with, lsmt_ends_with}; /***** Prototypes of public functions *****/ // Memory management void * xmalloc(size_t size); void * xrealloc(void *ptr, size_t size); // Character set conversion const char* convert_charset_direct(const char* s, const char *from_character_set, const char *to_character_set); const char* convert_charset(const char* s, enum convert_endpoint_t source_endpoint, enum convert_endpoint_t dest_endpoint); int can_convert_charset(enum convert_endpoint_t source_endpoint, enum convert_endpoint_t dest_endpoint); // String handling, including list handling void make_lowercase(char *buf); const char* list_pointer(const char *haystack, const char *needle, const char *delimiters, enum list_searchmode_t); int list_contains(const char *haystack, const char *needle, const char *delimiters); int list_contains_extension(const char *list, const char *filename); int string_substitute(char *haystack, const char *needle, const char *substitution, int haystack_size); // Case-insensitive filename operations int casestat(char *filename, struct stat *statbuf); int my_filelist_compare(const void *ap, const void *bp); // Networking int receive_line(int sock, char *buffer, int size, int timeout_seconds); int send_bytes(int sock, const char *buffer, int size); void send_line(int sock, const char *line); // Misc int get_recent_path(char *recentpath, const char *mediapath); void clean_pathname(char *pathname); int verify_path(char *p); int construct_pseudo_name(const char* prefix, char** thisname_p, int fullpath_len); void rename_filetype_outgoing(char* filename); void rename_filetype_incoming(char* filename); #endif /*UTILS_H_*/