mudgangster

Tiny, scriptable MUD client
Log | Files | Refs | README

whereami.h (2017B)


      1 // (‑●‑●)> dual licensed under the WTFPL v2 and MIT licenses
      2 //   without any warranty.
      3 //   by Gregory Pakosz (@gpakosz)
      4 // https://github.com/gpakosz/whereami
      5 
      6 #ifndef WHEREAMI_H
      7 #define WHEREAMI_H
      8 
      9 #ifdef __cplusplus
     10 extern "C" {
     11 #endif
     12 
     13 #ifndef WAI_FUNCSPEC
     14   #define WAI_FUNCSPEC
     15 #endif
     16 #ifndef WAI_PREFIX
     17 #define WAI_PREFIX(function) wai_##function
     18 #endif
     19 
     20 /**
     21  * Returns the path to the current executable.
     22  *
     23  * Usage:
     24  *  - first call `int length = wai_getExecutablePath(NULL, 0, NULL);` to
     25  *    retrieve the length of the path
     26  *  - allocate the destination buffer with `path = (char*)malloc(length + 1);`
     27  *  - call `wai_getExecutablePath(path, length, NULL)` again to retrieve the
     28  *    path
     29  *  - add a terminal NUL character with `path[length] = '\0';`
     30  *
     31  * @param out destination buffer, optional
     32  * @param capacity destination buffer capacity
     33  * @param dirname_length optional recipient for the length of the dirname part
     34  *   of the path.
     35  *
     36  * @return the length of the executable path on success (without a terminal NUL
     37  * character), otherwise `-1`
     38  */
     39 WAI_FUNCSPEC
     40 int WAI_PREFIX(getExecutablePath)(char* out, int capacity, int* dirname_length);
     41 
     42 /**
     43  * Returns the path to the current module
     44  *
     45  * Usage:
     46  *  - first call `int length = wai_getModulePath(NULL, 0, NULL);` to retrieve
     47  *    the length  of the path
     48  *  - allocate the destination buffer with `path = (char*)malloc(length + 1);`
     49  *  - call `wai_getModulePath(path, length, NULL)` again to retrieve the path
     50  *  - add a terminal NUL character with `path[length] = '\0';`
     51  *
     52  * @param out destination buffer, optional
     53  * @param capacity destination buffer capacity
     54  * @param dirname_length optional recipient for the length of the dirname part
     55  *   of the path.
     56  *
     57  * @return the length of the module path on success (without a terminal NUL
     58  * character), otherwise `-1`
     59  */
     60 WAI_FUNCSPEC
     61 int WAI_PREFIX(getModulePath)(char* out, int capacity, int* dirname_length);
     62 
     63 #ifdef __cplusplus
     64 }
     65 #endif
     66 
     67 #endif // #ifndef WHEREAMI_H