diff options
Diffstat (limited to 'wmiistatus.c')
-rw-r--r-- | wmiistatus.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/wmiistatus.c b/wmiistatus.c index 95cc2ef..6604533 100644 --- a/wmiistatus.c +++ b/wmiistatus.c @@ -102,9 +102,16 @@ static void cleanup_rbar_dir() { static void create_file(const char *name) { char pathbuf[strlen(wmii_path)+256+1]; int fd; + int flags = O_CREAT | O_WRONLY; + struct stat statbuf; (void)snprintf(pathbuf, sizeof(pathbuf), "%s%s", wmii_path, name); - if ((fd = open(pathbuf, O_CREAT | O_WRONLY | O_TRUNC, S_IRUSR | S_IWUSR)) < 0) + + /* Overwrite file's contents if it exists */ + if (stat(pathbuf, &statbuf) >= 0) + flags |= O_TRUNC; + + if ((fd = open(pathbuf, flags, S_IRUSR | S_IWUSR)) < 0) exit(EXIT_FAILURE); if (use_colors) { char *tmp = concat("#888888 ", wmii_normcolors); |