/* LFTOCRLF (STD) -- Line Feed to Carriage Return/Line Feed Converter */ /* LFTOCRLF (STD) -- Konvertierung LF nach CRLF */ /* // Copyright (c) 1992-2013 Bartels System GmbH, Muenchen // Author: Manfred Baumeister // Changes History: // rl (120427) RELEASED FOR BAE V7.8. // rl (101019) RELEASED FOR BAE V7.6. // rl (091021) RELEASED FOR BAE V7.4. // rl (081014) RELEASED FOR BAE V7.2. // rl (071029) RELEASED FOR BAE V7.0. // rl (060829) RELEASED FOR BAE V6.8. // rl (050906) RELEASED FOR BAE V6.6. // rl (040811) RELEASED FOR BAE V6.4. // rl (030904) RELEASED FOR BAE V6.2. // rl (021209) RELEASED FOR BAE V6.0. // rl (020618) RELEASED FOR BAE V5.4. // rl (010625) RELEASED FOR BAE V5.0. // rl (010409) ENHANCEMENT: // Added optional parameter settings from bae.ini file. // rl (000509) RELEASED FOR BAE V4.6. // rl (990625) RELEASED FOR BAE V4.4. // rl (980910) RELEASED FOR BAE V4.2. // mb (980710) ENHANCEMENT: // Dynamic multi-language support introduced. // rl (970929) RELEASED FOR BAE V4.0. // mb (960919) RELEASED FOR BAE V3.4. // mb (951012) IMPROVEMENT: // Performing BAE_Demo_check(2) before starting output. // mb (95) RELEASED FOR BAE V3.2. // mb (94) RELEASED FOR BAE V3.0. // mb (94) IMPROVEMENT: // File select menu on input to file name query. // mb (93) RELEASED FOR BAE V2.6. // mb (93) RELEASED FOR BAE V2.4. // mb (92) RELEASED FOR BAE V2.2. // mb (92) ORIGINAL CODING. // // DESCRIPTION // // The lftocrlf User Language program converts all line feed // characters within a freely selectable ASCII file to carriage // return and line feed control character sequences. */ // Includes #include "pop.ulh" // User Language popup utilities // Disable undo state request #pragma ULCALLERNOUNDO // Messages #define DE_REPDONE "Datei %s' Konvertierung LF nach CRLF durchgefuehrt." #define EN_REPDONE "File '%s' LF to CRLF file conversion done." #define DE_UPRCVTFILE "Konvertierung LF nach CRLF; Dateiname ? " #define EN_UPRCVTFILE "Convert LF to CRLF; File Name ? " #define DE_ERRFREAD "Fehler beim Lesen der Eingabedatei '%s'!" #define EN_ERRFREAD "Error reading input file '%s'!" #define DE_ERRFWRITE "Fehler beim Schreiben auf Temporaerdatei '%s'!" #define EN_ERRFWRITE "Error writing temporary file '%s'!" #define DE_ERRFCOPY "Fehler beim Kopieren!" #define EN_ERRFCOPY "Error copying file!" string REPDONE = M(DE_REPDONE ,EN_REPDONE ); string UPRCVTFILE = M(DE_UPRCVTFILE,EN_UPRCVTFILE); string ERRFREAD = M(DE_ERRFREAD ,EN_ERRFREAD ); string ERRFWRITE = M(DE_ERRFWRITE ,EN_ERRFWRITE ); string ERRFCOPY = M(DE_ERRFCOPY ,EN_ERRFCOPY ); // INI file parameter name definitions #define PAR_TMPFILE "CRLFTMPFILE_STD" // Temporary file name // Global definitions string TMPFILE = bae_inistrval(PAR_TMPFILE,"tmp_lfcr.tmp") /* Temporary file name */; STRINGS extlist = {bae_swversion(3)} /* File name extension list */; string ifname /* Input file name */; // Main program void main() { int ifh,tfh /* File handles */; // Perform BAE Demo check with abort option BAE_Demo_check(2); // Select file to convert if ((ifname=askfile(UPRCVTFILE,extlist,0))=="") error_abort(); // Open the input file ifh=bae_fopen(ifname,0); // Open the temporary file tfh=bae_fopen(TMPFILE,1); // Convert the files cvtfiles(ifh,tfh); // Close the files fclose(ifh); fclose(tfh); // Move the temporary to the input file if (remove(ifname) || rename(TMPFILE,ifname)) error(ERRFCOPY); // Print the conversion done message message(REPDONE,ifname); } // Data conversion void cvtfiles(int ifh,int ofh) /* // Convert the files // Parameters : // int ifh : Input file handle // int ofh : Output file handle */ { int cc /* Current character */; // Get current character until end of input file reached while ((cc=fgetc(ifh))>=0) { // Test the current character if (cc==13) // CR; ignore it continue; else if (cc==10) { // LF; print CRLF explicitely if (fputc(269,ofh) || fputc(266,ofh)) errormsg(ERRFWRITE,TMPFILE); } else { // Print the current character if (fputc(cc,ofh)) errormsg(ERRFWRITE,TMPFILE); } } // Test on read errors if (!feof(ifh)) errormsg(ERRFREAD,ifname); } // User Language program end