diff -up mgetty-1.1.36/logname.c.issue mgetty-1.1.36/logname.c --- mgetty-1.1.36/logname.c.issue 2008-10-09 22:56:17.000000000 +0200 +++ mgetty-1.1.36/logname.c 2008-10-09 22:56:17.000000000 +0200 @@ -97,12 +97,14 @@ char * ln_escape_prompt _P1( (ep), char switch ( *ep ) { case 'n': p[i++] = '\n'; break; - case 'r': p[i++] = '\r'; break; case 'g': p[i++] = '\007'; break; + case 'f': p[i++] = '\f'; break; +#ifndef ESCAPE_LIKE_AGETTY + case 'r': p[i++] = '\r'; break; case 'b': p[i++] = '\010'; break; case 'v': p[i++] = '\013'; break; - case 'f': p[i++] = '\f'; break; case 't': p[i++] = '\t'; break; +#endif case 's': /* Operating System */ if ( i + strlen(un.sysname) +1 > MAX_PROMPT_LENGTH ) break; i += strappnd( &p[i], un.sysname ); @@ -111,10 +113,16 @@ char * ln_escape_prompt _P1( (ep), char if ( i + strlen(un.machine) +1 > MAX_PROMPT_LENGTH ) break; i += strappnd( &p[i], un.machine ); break; +#ifdef ESCAPE_LIKE_AGETTY + case 'r': /* OS release */ +#endif case 'R': /* OS release */ if ( i + strlen(un.release) +1 > MAX_PROMPT_LENGTH ) break; i += strappnd( &p[i], un.release ); break; +#ifdef ESCAPE_LIKE_AGETTY + case 'v': /* OS version */ +#endif case 'V': /* OS version */ if ( i + strlen(un.version) +1 > MAX_PROMPT_LENGTH ) break; i += strappnd( &p[i], un.version ); @@ -126,6 +134,12 @@ char * ln_escape_prompt _P1( (ep), char i += strappnd( &p[i], CallerId ); break; } +#ifdef ESCAPE_LIKE_AGETTY + case 'l': /* this doesn't cause */ + /* conflicts between */ + /* mgetty and agetty */ + /* maybe unconditionalize? */ +#endif case 'P': /* port name */ case 'L': /* tty line */ { @@ -147,13 +161,16 @@ char * ln_escape_prompt _P1( (ep), char i += strappnd( &p[i], Connect); break; } - case 'N': /* numer of */ + case 'N': /* number of */ case 'U': /* users */ { sprintf( &p[i], "%d", get_current_users() ); i = strlen(p); break; } +#ifdef ESCAPE_LIKE_AGETTY + case 'b': /* baud rate */ +#endif case 'S': /* port speed */ { /* ugly, I know. */ TIO temp_t; @@ -162,6 +179,10 @@ char * ln_escape_prompt _P1( (ep), char i = strlen(p); } break; +#ifdef ESCAPE_LIKE_AGETTY + case 'd': + case 't': +#endif case 'D': /* fallthrough */ case 'T': if ( i + 30 > MAX_PROMPT_LENGTH ) @@ -175,7 +196,7 @@ char * ln_escape_prompt _P1( (ep), char if ( tm == NULL ) break; - if ( *ep == 'D' ) + if ( ( *ep == 'D' ) || ( *ep == 'd' ) ) sprintf( &p[i], "%d/%d/%d", tm->tm_mon+1, tm->tm_mday, tm->tm_year + 1900 ); else diff -up mgetty-1.1.36/policy.h.issue mgetty-1.1.36/policy.h --- mgetty-1.1.36/policy.h.issue 2008-10-09 22:56:17.000000000 +0200 +++ mgetty-1.1.36/policy.h 2008-10-09 22:56:17.000000000 +0200 @@ -228,6 +228,14 @@ */ #define NOLOGIN_FILE "/etc/nologin.%s" +/* How to handle escape sequences in /etc/issue and friends. + * + * If ESCAPE_LIKE_AGETTY is defined, escape sequences (stored as backslashes + * followed by some character) will be interpreted in a manner consistent + * with agetty. Not defining ESCAPE_LIKE_AGETTY will cause the default + * behavior to be utilized. + */ +#define ESCAPE_LIKE_AGETTY /* misc */