Script des Tages: ruler

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Re: Script des Tages: ruler

Beitrag von linuxCowboy » 25.08.2015 21:40:25

Es ist endlich soweit: der ruler zieht in die coreutils ein!

Code: Alles auswählen

### coreutils 8.24 seq.c

#include <sys/ioctl.h>

/* print a ruler */
static bool ruler;
 
  if (ruler) {
    char *p = "012345678_";

    struct winsize w;
    ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);

    for (int i = 1; i <= w.ws_col; ++i) {
      if (i % 10)
        printf("%c", p[i % 10]);
      else
        printf("%c", i / 10 % 10 + 48);
    }
    return EXIT_SUCCESS;
  }
Hier ist die diff. Vielleicht implementiert es auch jemand in fold, wie Cae vorschlägt?

Nur ich patche mein seq sowieso, da bietet es sich an.

Der ruler könnte sicher noch optimiert werden, diesmal in C... :wink:
-der_linux_cowboy --- Besser werden! ... f*** w$$

linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Re: Script des Tages: ruler

Beitrag von linuxCowboy » 26.08.2015 13:34:39

Sicher ist sicher, wobei mir 256 ein guter Wert erscheint.

Code: Alles auswählen

  if (ruler) {
    char *p = "012345678_";

    struct winsize w;
    ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);

    for (int i = 1; i <= (w.ws_col > 0 && w.ws_col < 256 ? w.ws_col : 80); ++i) {
      if (i % 10)
        printf("%c", p[i % 10]);
      else
        printf("%c", i / 10 % 10 + 48);
    }
    fputs (terminator, stdout);

    return EXIT_SUCCESS;
  }
diff-file
-der_linux_cowboy --- Besser werden! ... f*** w$$

Antworten