home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fonts 1 / freshfonts1.bin / programs / amiga / fs2l / sources / fs2l.e next >
Text File  |  1994-09-01  |  4KB  |  275 lines

  1. OPT OSVERSION=37
  2.  
  3.  
  4. ENUM    OUT_OF_MEMORY , ARGS_ERROR , IO_ERROR
  5.  
  6. RAISE   OUT_OF_MEMORY   IF New()        =    NIL ,
  7.         ARGS_ERROR      IF ReadArgs()    =    NIL ,
  8.         IO_ERROR        IF Open()        =    NIL
  9.  
  10.  
  11. DEF file , file_ptr : PTR TO CHAR , file_ptr_tmp : PTR TO CHAR
  12.  
  13.  
  14. PROC main() HANDLE
  15.  
  16.     DEF rdargs = NIL , arguments : PTR TO LONG
  17.     DEF file_length , file_end
  18.     DEF version , car
  19.  
  20.     Vprintf( '            \c1;33;40\cFS2L\c0;31;40\c v1.0\n' , [ $9B , $6D , $9B , $6D ] )
  21.     PutStr( 'Copyright © 1993, Lionel Vintenat\n' )
  22.     Vprintf( '\c1;32;40\c---------------------------------\c0;31;40\c\n' , [ $9B , $6D , $9B , $6D ] )
  23.     version := '$VER: FS2L 1.0 (30.4.94)'
  24.  
  25.     arguments := [ NIL , NIL ]
  26.     rdargs := ReadArgs( 'FROM/A,TO' , arguments , NIL )
  27.  
  28.     file :=  Open( arguments[ 0 ] , OLDFILE )
  29.     file_length := FileLength( arguments[ 0 ] )
  30.     file_ptr := New( file_length )
  31.     file_end := file_ptr + file_length
  32.     Read( file , file_ptr ,  file_length )
  33.     Close( file )
  34.  
  35.     file := Open( IF arguments[ 1 ] THEN arguments[ 1 ] ELSE arguments[ 0 ] , NEWFILE )
  36.  
  37.     file_ptr_tmp := file_ptr
  38.  
  39.     WHILE file_ptr < file_end
  40.  
  41.         car := file_ptr[ 0 ]++
  42.  
  43.         SELECT car
  44.  
  45.             CASE "¡"
  46.                 write_sequence( '{!`}' )
  47.  
  48.             CASE "£"
  49.                 write_sequence( '\\pounds' )
  50.  
  51.             CASE "§"
  52.                 write_sequence( '{\\S}' )
  53.  
  54.             CASE "©"
  55.                 write_sequence( '\\copyright' )
  56.  
  57.             CASE "µ"
  58.                 write_sequence( '\\mu' )
  59.  
  60.             CASE "¶"
  61.                 write_sequence( '{\\P}' )
  62.  
  63.             CASE "¿"
  64.                 write_sequence( '{?`}' )
  65.  
  66.             CASE "À"
  67.                 write_sequence( '\\`A' )
  68.  
  69.             CASE "Á"
  70.                 write_sequence( '\\''A' )
  71.  
  72.             CASE "Â"
  73.                 write_sequence( '\\^A' )
  74.  
  75.             CASE "Ã"
  76.                 write_sequence( '\\~A' )
  77.  
  78.             CASE "Ä"
  79.                 write_sequence( '\\"A' )
  80.  
  81.             CASE "Å"
  82.                 write_sequence( '{\\AA}' )
  83.  
  84.             CASE "Æ"
  85.                 write_sequence( '{\\AE}' )
  86.  
  87.             CASE "Ç"
  88.                 write_sequence( '\\c{C}' )
  89.  
  90.             CASE "È"
  91.                 write_sequence( '\\`E' )
  92.  
  93.             CASE "É"
  94.                 write_sequence( '\\''E' )
  95.  
  96.             CASE "Ê"
  97.                 write_sequence( '\\^E' )
  98.  
  99.             CASE "Ë"
  100.                 write_sequence( '\\"E' )
  101.  
  102.             CASE "Ì"
  103.                 write_sequence( '\\`I' )
  104.  
  105.             CASE "Í"
  106.                 write_sequence( '\\''I' )
  107.  
  108.             CASE "Î"
  109.                 write_sequence( '\\^I' )
  110.  
  111.             CASE "Ï"
  112.                 write_sequence( '\\"I' )
  113.  
  114.             CASE "Ñ"
  115.                 write_sequence( '\\~N' )
  116.  
  117.             CASE "Ò"
  118.                 write_sequence( '\\`O' )
  119.  
  120.             CASE "Ó"
  121.                 write_sequence( '\\''O' )
  122.  
  123.             CASE "Ô"
  124.                 write_sequence( '\\^O' )
  125.  
  126.             CASE "Õ"
  127.                 write_sequence( '\\~O' )
  128.  
  129.             CASE "Ö"
  130.                 write_sequence( '\\"O' )
  131.  
  132.             CASE "Ø"
  133.                 write_sequence( '{\\O}' )
  134.  
  135.             CASE "Ù"
  136.                 write_sequence( '\\`U' )
  137.  
  138.             CASE "Ú"
  139.                 write_sequence( '\\''U' )
  140.  
  141.             CASE "Û"
  142.                 write_sequence( '\\^U' )
  143.  
  144.             CASE "Ü"
  145.                 write_sequence( '\\"U' )
  146.  
  147.             CASE "ß"
  148.                 write_sequence( '\\beta' )
  149.  
  150.             CASE "à"
  151.                 write_sequence( '\\`a' )
  152.  
  153.             CASE "á"
  154.                 write_sequence( '\\''a' )
  155.  
  156.             CASE "â"
  157.                 write_sequence( '\\^a' )
  158.  
  159.             CASE "ã"
  160.                 write_sequence( '\\~a' )
  161.  
  162.             CASE "ä"
  163.                 write_sequence( '\\"a' )
  164.  
  165.             CASE "å"
  166.                 write_sequence( '{\\aa}' )
  167.  
  168.             CASE "æ"
  169.                 write_sequence( '{\\ae}' )
  170.  
  171.             CASE "ç"
  172.                 write_sequence( '\\c{c}' )
  173.  
  174.             CASE "è"
  175.                 write_sequence( '\\`e' )
  176.  
  177.             CASE "é"
  178.                 write_sequence( '\\''e' )
  179.  
  180.             CASE "ê"
  181.                 write_sequence( '\\^e' )
  182.  
  183.             CASE "ë"
  184.                 write_sequence( '\\"e' )
  185.  
  186.             CASE "ì"
  187.                 write_sequence( '\\`{\\i}' )
  188.  
  189.             CASE "í"
  190.                 write_sequence( '\\''{\\i}' )
  191.  
  192.             CASE "î"
  193.                 write_sequence( '\\^{\\i}' )
  194.  
  195.             CASE "ï"
  196.                 write_sequence( '\\"{\\i}' )
  197.  
  198.             CASE "ñ"
  199.                 write_sequence( '\\~n' )
  200.  
  201.             CASE "ò"
  202.                 write_sequence( '\\`o' )
  203.  
  204.             CASE "ó"
  205.                 write_sequence( '\\''o' )
  206.  
  207.             CASE "ô"
  208.                 write_sequence( '\\^o' )
  209.  
  210.             CASE "õ"
  211.                 write_sequence( '\\~o' )
  212.  
  213.             CASE "ö"
  214.                 write_sequence( '\\"o' )
  215.  
  216.             CASE "ø"
  217.                 write_sequence( '{\\o}' )
  218.  
  219.             CASE "ù"
  220.                 write_sequence( '\\`u' )
  221.  
  222.             CASE "ú"
  223.                 write_sequence( '\\''u' )
  224.  
  225.             CASE "û"
  226.                 write_sequence( '\\^u' )
  227.  
  228.             CASE "ü"
  229.                 write_sequence( '\\"u' )
  230.  
  231.             CASE "ý"
  232.                 write_sequence( '\\''y' )
  233.  
  234.             CASE "ÿ"
  235.                 write_sequence( '\\"y' )
  236.  
  237.         ENDSELECT
  238.  
  239.     ENDWHILE
  240.  
  241.     Write( file , file_ptr_tmp , file_ptr - file_ptr_tmp )
  242.     Close( file )
  243.     FreeArgs( rdargs )
  244.  
  245. EXCEPT
  246.  
  247.     SELECT exception
  248.  
  249.         CASE ARGS_ERROR
  250.             PrintFault( IoErr() , NIL )
  251.  
  252.         CASE OUT_OF_MEMORY
  253.             PutStr( 'Out of memory !\n' )
  254.  
  255.         CASE IO_ERROR
  256.             PrintFault( IoErr() , NIL )
  257.  
  258.     ENDSELECT
  259.  
  260.     IF rdargs THEN FreeArgs( rdargs )
  261.  
  262.     CleanUp( 100 )
  263.  
  264. ENDPROC
  265.  
  266.  
  267. PROC write_sequence( sequence )
  268.  
  269.     Write( file , file_ptr_tmp , file_ptr - file_ptr_tmp - 1 )
  270.     Write( file , sequence , StrLen( sequence ) )
  271.  
  272.     file_ptr_tmp := file_ptr
  273.  
  274. ENDPROC
  275.