3 AppDev
David Anderson edited this page 2023-08-10 03:26:12 -07:00

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