/* * $Id$ * * Library of useful functions * Part of Equinox Desktop Environment (EDE). * Copyright (c) 2000-2006 EDE Authors. * * This program is licenced under terms of the * GNU General Public Licence version 2 or newer. * See COPYING for details. */ #ifndef edelib_Util_h #define edelib_Util_h #include "../edeconf.h" namespace edelib { // Constants #define SYSTEM_PATH PREFIX"/share/ede" #define DOC_PATH SYSTEM_PATH"/doc" // Cross-platform test if path is absolute or relative int is_path_rooted(const char *fn); // Recursively create a path in the file system bool make_path( const char *path ); // Create the path needed for file using make_path bool make_path_for_file( const char *path ); // Cross-platform function for system files location char* get_sys_dir(); // strcat() that also does realloc if needed. Useful if // e.g. you have a loop which grows string in each pass // -- Note: due to use of realloc *always* use strdupcat return value: // dest = strdupcat(dest,src); // and *never* use it like: // strdupcat(dest,src); // NOTE this function is not used! Its use is not recommended char* strdupcat(char *dest, const char *src); // Whitespace trim (both left and right) char* wstrim(char *string); // Version with temporary results (static char[]) const char* twstrim(const char *string); // Finds in haystack any of strings contained in string "needles". The substrings // are divided with separator. // Not actually used... char* strstrmulti(const char *haystack, const char *needles, const char *separator); // Returns nicely formatted string for byte sizes e.g. "1.2 kB" for size=1284 const char* nice_size(double size); // Returns nicely formatted string for date and time given in seconds since // Epoch. This should be in config const char* nice_time(long int epoch); // Create vector from string using separator //std::vector vec_from_string(const char *str, const char *separator); /*! \fn const char* edelib::tsprintf(char* format, ...) A useful function which executes sprintf() on a static char[] variable big enough to hold short temporary strings. The variable remains valid until next call. Use: run_program(tsprintf(PREFIX"/bin/eiconsconf %s",param)); When setting text values of fltk objects, instead use tasprintf which executes a strdup. Example: window->label(tasprintf("%s, version %s",appname,appversion)); */ const char* tsprintf(char* format, ...); char* tasprintf(char* format, ...); } #endif