#include <stdio.h>
#include <string.h>
#include <ctype.h>

char *argv0;

int
e(FILE *fp)
{
       int c;

       c = fgetc(fp);
       for (;;) {
               if (c == EOF)
                       break;

               if (c == '\n') {
                       c = fgetc(fp);
                       if (c == EOF) {
                               putchar('\n');
                               break;
                       }
                       if (ungetc(c, fp) == EOF) {
                               perror(argv0);
                               return 1;
                       }
                       c = '\n';
               }

               if (isalnum(c) ||
                       c == '-' | c == '.' | c == '_' | c == '~') {
                       putchar(c);
                       goto l;
               }

               printf("%%%02X", c);

               l:
               c = fgetc(fp);
       }

       if (ferror(fp) != 0) {
               perror(argv0);
               return 1;
       }

       return 0;
}

int
main(int argc, char *argv[])
{

       FILE *fp;
       int i;

       argv0 = argv[0];

       if (argc == 1) return e(stdin);

       for (i = 1; i < argc; i++) {
               fp = fopen(argv[i], "r");
               if (!fp) {
                       perror(argv[0]);
                       return 1;
               }

               e(fp);
       }

}