Hi all, I've modified my patch about /etc/issue support for getty.c. It's now faster, and the code is cleaner. (Thanks to Niels!) I attach here the diff file and a single issue file to be used in GNU. Hope you like, Julio. -- Juli-Manel Merino Vidal <jmmv@mail.com> ---------------------------------------- Become a GNU! (http://www.gnu.org) Running Debian GNU/Linux woody ----------------------------------------
20a21,22 > /* Modified by Julio Merino to add /etc/issue support */ > 38a41 > #define _BANNER_FILE "/etc/issue" 47a51 > FILE *f; 52,54c56,121 < cc = asprintf (&s, "\r\n\n%s %s (%s) (%s)\r\n\n", < u.sysname, u.release, hostname ?: "?", basename (ttyname)); < write (fd, s, cc); --- > f = fopen (_BANNER_FILE, "r"); > if (!f) > { > /* Issue can't be open; print a default message */ > cc = asprintf (&s, "\r\n\n%s %s (%s) (%s)\r\n\n", > u.sysname, u.release, hostname ?: "?", basename > (ttyname)); > write (fd, s, cc); > } > else > { > int outfd; > FILE *out; > > outfd = dup (fd); > if (outfd < 0) return; > out = fdopen (outfd, "w"); > > /* Read issue and print it */ > for (;;) > { > int c; > > c = fgetc (f); > > switch (c) > { > case EOF: > fclose (f); > fclose (out); > return; > case '\\': > /* Escape secuence found */ > c = fgetc (f); > switch (c) > { > case EOF: > fputc ('\\', out); > fclose (f); > fclose (out); > return; > case 's': /* System name */ > fprintf (out, "%s", u.sysname); > break; > case 'r': /* Release */ > fprintf (out, "%s", u.release); > break; > case 'n': /* Hostname */ > fprintf (out, "%s", hostname); > break; > case 'l': /* TTY name */ > fprintf (out, "%s", basename (ttyname)); > break; > case 'm': /* Machine */ > fprintf (out, "%s", u.machine); > break; > default: > fputc (c, out); > } > break; > default: > fputc (c, out); > break; > } > } > }
Attachment:
issue
Description: Binary data