Cross-platform utility functions
BOINC supplies various functions that may be useful in applications, such as cross-platform interfaces to operating system features.
Miscellaneous
General functions (in lib/util.cpp/h):
- double dtime()
- return Unix time with fractional seconds
- double dday()
- return Unix time at start of this day
- void boinc_sleep(double)
- sleep for given number of seconds
- double drand(), rand_normal()
- uniform and normal random numbers
- read_file_string(const char* path, string&)
- read file into string
File system
File system functions (in lib/filesys.cpp/h):
extern int boinc_delete_file(const char*); extern int boinc_touch_file(const char *path); extern FILE* boinc_fopen(const char* path, const char* mode); extern int boinc_copy(const char* orig, const char* newf); extern int boinc_rename(const char* old, const char* newf); extern int boinc_mkdir(const char*); #ifdef _WIN32 extern int boinc_allocate_file(const char*, double size); #else extern int boinc_chown(const char*, gid_t); #endif extern int boinc_rmdir(const char*); extern void boinc_getcwd(char*); extern void relative_to_absolute(const char* relname, char* path); extern int is_file(const char* path); extern int is_dir(const char* path); extern int is_file_follow_symlinks(const char* path); extern int is_dir_follow_symlinks(const char* path); extern int is_symlink(const char* path); extern bool is_dir_empty(const char*); extern int boinc_truncate(const char*, double); extern int boinc_file_exists(const char* path); extern int boinc_file_or_symlink_exists(const char* path); extern int file_size(const char*, double&); extern int clean_out_dir(const char*); extern int dir_size(const char* dirpath, double&, bool recurse=true); class DirScanner; // for scanning directories struct FILE_LOCK; // for locking a file
XML parsing
See lib/parse.cpp,h
String functions
See lib/str_util.h
Cross-platform support for strlcpy(), strlcat(), strcasestr() and strcasecmp() is in lib/str_replace.cpp,h
RSA cryptography
See lib/crypt.cpp,h
MD5 hash
See lib/md5.cpp,h
Semaphores
See lib/synch.cpp,h
Shared memory
See lib/shmem.cpp,h
Network communication
See lib/network.cpp,h
Process control
See lib/proc_control.cpp,h