Exit show-time if terminal width is unknown. master
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Mon, 27 Jun 2011 06:23:58 +0000 (08:23 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Mon, 27 Jun 2011 06:23:58 +0000 (08:23 +0200)
show-time.c

index 4e4369f..9f02fc0 100644 (file)
@@ -18,7 +18,7 @@ int getColumns() {
        if (!error) {
                return terminalSize.ws_col;
        }
        if (!error) {
                return terminalSize.ws_col;
        }
-       return 80;
+       return -1;
 }
 
 int main(int argc, char** argv) {
 }
 
 int main(int argc, char** argv) {
@@ -26,6 +26,7 @@ int main(int argc, char** argv) {
        struct tm *localTime;
        time_t currentTime;
        char buffer[80];
        struct tm *localTime;
        time_t currentTime;
        char buffer[80];
+       int terminalWidth;
 
        if (fork() != 0) {
                return 0;
 
        if (fork() != 0) {
                return 0;
@@ -36,7 +37,11 @@ int main(int argc, char** argv) {
                localTime = localtime(&currentTime);
                strftime(buffer, 80, "%d.%m.%Y %H:%M:%S", localTime);
                printf("%c[s", 27); /* save cursor position */
                localTime = localtime(&currentTime);
                strftime(buffer, 80, "%d.%m.%Y %H:%M:%S", localTime);
                printf("%c[s", 27); /* save cursor position */
-               printf("%c[%d;%dH", 27, 1, (int) (getColumns() - strlen(buffer))); /* set cursor */
+               terminalWidth = getColumns();
+               if (terminalWidth == -1) {
+                       return 0;
+               }
+               printf("%c[%d;%dH", 27, 1, (int) (terminalWidth - strlen(buffer))); /* set cursor */
                printf("%s", buffer);
                printf("%c[u", 27); /* restore cursor position */
                fflush(stdout);
                printf("%s", buffer);
                printf("%c[u", 27); /* restore cursor position */
                fflush(stdout);