diff options
Diffstat (limited to 'src/utils.c')
| -rw-r--r-- | src/utils.c | 27 | 
1 files changed, 21 insertions, 6 deletions
| diff --git a/src/utils.c b/src/utils.c index 417b0cc..802d397 100644 --- a/src/utils.c +++ b/src/utils.c @@ -4,8 +4,9 @@  extern struct OMC_GLOBAL globals;  char *dirstack[1024]; -const size_t dirstack_max = sizeof(dirstack) / sizeof(dirstack[0]); -size_t dirstack_len = 0; +const ssize_t dirstack_max = sizeof(dirstack) / sizeof(dirstack[0]); +ssize_t dirstack_len = 0; +  int pushd(const char *path) {      if (dirstack_len + 1 > dirstack_max) {          return -1; @@ -309,7 +310,6 @@ int touch(const char *filename) {          perror(filename);          return 1;      } -    fprintf(stderr, "");      fclose(fp);      return 0;  } @@ -375,7 +375,7 @@ char *git_describe(const char *path) {  void msg(unsigned type, char *fmt, ...) {      FILE *stream = NULL;      char header[255]; -    char status[255]; +    char status[20];      if (type & OMC_MSG_NOP) {          // quiet mode @@ -418,8 +418,7 @@ void msg(unsigned type, char *fmt, ...) {      fprintf(stream, "%s", header);      vfprintf(stream, fmt, args); -    printf("%s", OMC_COLOR_RESET); -    printf("%s", OMC_COLOR_RESET); +    fprintf(stream, "%s", OMC_COLOR_RESET);      va_end(args);  } @@ -429,3 +428,19 @@ void debug_shell() {      msg(OMC_MSG_L1 | OMC_MSG_WARN, "EXITING OMC DEBUG SHELL\n" OMC_COLOR_RESET);      exit(255);  } + +char *xmkstemp(FILE **fp) { +    char t_name[PATH_MAX]; +    strcpy(t_name, "/tmp/OMC.XXXXXX"); +    int fd = mkstemp(t_name); + +    *fp = fdopen(fd, "w"); +    if (!*fp) { +        if (fd > 0) +            close(fd); +        *fp = NULL; +        return NULL; +    } +    char *path = strdup(t_name); +    return path; +}
\ No newline at end of file | 
