/*----------------------------------------------------------------*/ /* rkeys.c Keven Miller 03/07/2012 kevenm@3kranger.com */ /* restore function keys from a file */ /* Unix: cc -o rkeys rkeys.c */ /* MPE: setvar ccopts "-Aa +e +w1" */ /* ccxllk rkeys,rkeys.pub */ /*----------------------------------------------------------------*/ #ifdef __mpexl #pragma list off #endif #include #include #define proc /*----------------------------------------------------------------*/ proc int rkeys ( char *fname ) { int x, len; char keys [2048]; /* (30 + 160 + 2) * 8 = 1536 */ FILE *f; errno = ENOENT; /* when fname is empty */ f = ( fname ? fopen ( fname, "rb" ) : 0 ); if ( f ) { len = fread ( keys, 1, sizeof (keys), f ); keys [len] = 0; fclose ( f ); for ( x = len -1; x > 0; --x ) if ( keys [x] ) break; ++x; if ( x == sizeof (keys) ) printf ("!! Warning keys buffer (%d) full\n", sizeof (keys) ); printf ( "\x1B" "Z" "%s" "\x1B&jB", keys ); fflush (stdout); } return ( f ? 1 : -1 ); } /*----------------------------------------------------------------*/ proc int main ( int ac, char *av [] ) { if ( rkeys ( ac > 1 ? av [1] : "" ) < 0 ) perror ( av [1] ); } /*----------------------------------------------------------------*/