diff options
author | Anas Nashif <anas.nashif@intel.com> | 2012-11-06 22:52:30 -0800 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2012-11-06 22:52:30 -0800 |
commit | abbdb46243b3340f9a73adff8a0941931eab0daa (patch) | |
tree | 6cdd357003d675da2dee748f8028148ce52c5a7a | |
download | dos2unix-abbdb46243b3340f9a73adff8a0941931eab0daa.tar.gz dos2unix-abbdb46243b3340f9a73adff8a0941931eab0daa.tar.bz2 dos2unix-abbdb46243b3340f9a73adff8a0941931eab0daa.zip |
Imported Upstream version 6.0upstream/6.0
-rw-r--r-- | BUGS.txt | 15 | ||||
-rw-r--r-- | COPYING.txt | 30 | ||||
-rw-r--r-- | ChangeLog.txt | 519 | ||||
-rw-r--r-- | INSTALL.txt | 195 | ||||
-rw-r--r-- | Makefile | 473 | ||||
-rw-r--r-- | NEWS.txt | 112 | ||||
-rw-r--r-- | README.txt | 90 | ||||
-rw-r--r-- | TODO.txt | 14 | ||||
-rw-r--r-- | bcc.mak | 55 | ||||
-rw-r--r-- | common.c | 645 | ||||
-rw-r--r-- | common.h | 218 | ||||
-rw-r--r-- | djgpp.mak | 36 | ||||
-rw-r--r-- | dos16_gnu.mak | 32 | ||||
-rw-r--r-- | dos2unix.c | 1181 | ||||
-rw-r--r-- | dos2unix.h | 222 | ||||
-rwxr-xr-x | man/es/man1/dos2unix.pod | 548 | ||||
-rw-r--r-- | man/man1/Makefile | 101 | ||||
-rw-r--r-- | man/man1/dos2unix.pod | 535 | ||||
-rw-r--r-- | man/nl/man1/dos2unix.pod | 539 | ||||
-rw-r--r-- | mingw.mak | 37 | ||||
-rw-r--r-- | mingw64.mak | 40 | ||||
-rw-r--r-- | os2.mak | 35 | ||||
-rw-r--r-- | po/de.po | 411 | ||||
-rw-r--r-- | po/dos2unix.pot | 331 | ||||
-rw-r--r-- | po/eo-x.po | 367 | ||||
-rw-r--r-- | po/eo.po | 367 | ||||
-rw-r--r-- | po/es.po | 378 | ||||
-rw-r--r-- | po/nl.po | 378 | ||||
-rw-r--r-- | querycp.c | 196 | ||||
-rw-r--r-- | querycp.h | 3 | ||||
-rw-r--r-- | unix2dos.c | 1204 | ||||
-rw-r--r-- | unix2dos.h | 222 | ||||
-rw-r--r-- | version.mk | 4 | ||||
-rw-r--r-- | wccdos16.mak | 63 | ||||
-rw-r--r-- | wccdos32.mak | 63 | ||||
-rw-r--r-- | wccwin32.mak | 65 |
36 files changed, 9724 insertions, 0 deletions
diff --git a/BUGS.txt b/BUGS.txt new file mode 100644 index 0000000..0495938 --- /dev/null +++ b/BUGS.txt @@ -0,0 +1,15 @@ +KNOWN BUGS + + querycp.c: query_con_codepage() + The DOS 16 and 32 bit versions compiled with OpenWatcom report + a wrong active code page under Windows 98. + A correct code page is reported under FreeDOS. + + +REPORTING BUGS + + Report bugs at the dos2unix SourceForge Tracker page + http://sourceforge.net/projects/dos2unix/ + Bugs tracker: http://sourceforge.net/tracker/?group_id=292083&atid=1234808 + + or send an email to Erwin Waterlander <waterlan@xs4all.nl> diff --git a/COPYING.txt b/COPYING.txt new file mode 100644 index 0000000..bdb650f --- /dev/null +++ b/COPYING.txt @@ -0,0 +1,30 @@ +The dos2unix package is distributed under FreeBSD style license. +See also http://www.freebsd.org/copyright/freebsd-license.html +-------- + +Copyright (C) 2009-2012 Erwin Waterlander +Copyright (C) 1998 Christian Wurll +Copyright (C) 1998 Bernd Johannes Wuebben +Copyright (C) 1994-1995 Benjamin Lin. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice in the documentation and/or other materials provided with + the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/ChangeLog.txt b/ChangeLog.txt new file mode 100644 index 0000000..d2ec09e --- /dev/null +++ b/ChangeLog.txt @@ -0,0 +1,519 @@ +2012-05-06 Erwin Waterlander <waterlan@xs4all.nl> + * Version 6.0 + * man/*/man1/*.pod: Removed =encoding. It is not supported + by perl 5.8.8, which is shipped with MinGW and DJGPP. + +2012-04-20 Erwin Waterlander <waterlan@xs4all.nl> + * man/*/man1/*.pod: Set encoding explicitly to Latin-1. + * Makefile: Target 'doc' makes all man pages. + +2012-04-12 Erwin Waterlander <waterlan@xs4all.nl> + * po/de.po: Update German translations. Thanks to Philipp Thomas. + +2012-04-09 Erwin Waterlander <waterlan@xs4all.nl> + * INSTALL.txt: List the prerequisites. + * Makefile: Friendlier for DJGPP/MinGW/MSYS. + +2012-04-04 Erwin Waterlander <waterlan@xs4all.nl> + * po/eo.po: Update Esperanto translations. Thanks to Rugxulo. + +2012-03-30 Erwin Waterlander <waterlan@xs4all.nl> + * Skip UTF-16 file when conversion to UTF-8 goes wrong. + * Update English and Dutch manual. + +2012-03-28 Erwin Waterlander <waterlan@xs4all.nl> + * common.c: Support UTF-16 surrogate pairs. + * dos2unix.c, unix2dos.c: Check wchar_t size. + +2012-03-26 Erwin Waterlander <waterlan@xs4all.nl> + * *.c: Use fgetc/fputc instead of getc/putc. + +2012-03-25 Erwin Waterlander <waterlan@xs4all.nl> + * po, man: Update Dutch translations. + +2012-03-24 Erwin Waterlander <waterlan@xs4all.nl> + * On Unix, convert UTF-16 files only when the locale encoding + is UTF-8 to prevent accidental loss of text. + +2012-03-23 Erwin Waterlander <waterlan@xs4all.nl> + * Turn off ISO and 7-bit mode if an Unicode text file is detected, + to prevent corruption of UTF-8 files. + * Update English manual. + * Fix compilation for WatcomC, DJGPP, MSYS, OS/2. + * Makefile: Support CFLAGS_USER, LDFLAGS_USER, and DEFS_USER for + Debian Linux. Thanks to Jari Aalto. + +2012-03-21 Erwin Waterlander <waterlan@xs4all.nl> + * Support conversion of Unicode UTF-16 from stdin. + * Update English manual. + +2012-03-20 Erwin Waterlander <waterlan@xs4all.nl> + * Support conversion of Unicode UTF-16 encoded files. + +2012-03-16 Erwin Waterlander <waterlan@xs4all.nl> + * common.c: Make it compile on Cygwin 1.5. + +2012-03-10 Erwin Waterlander <waterlan@xs4all.nl> + * Version 5.3.3 + * Makefile: Binary packages with native language support + get "-nls" suffix. + +2012-03-08 Erwin Waterlander <waterlan@xs4all.nl> + * common.c: Option -V prints target OS on DOS/Windows/OS2. + +2012-03-07 Erwin Waterlander <waterlan@xs4all.nl> + * dos2unix.c, unix2dos.c, mingw64.mak: Enabled wildcard + expansion for Win64 (MinGW-w64). Thanks to Steve Hay. + * wccdos16.mak: Enabled wildcard expansion. + * wccdos32.mak: Enabled wildcard expansion. + * wccwin32.mak: Enabled wildcard expansion. + * bcc.mak: Enabled wildcard expansion. + +2012-03-02 Erwin Waterlander <waterlan@xs4all.nl> + * Makefile: New target 'mostlyclean' that preserves the manual + files. Target 'clean' removes all built files, it restores the + Unix source package to its original state. + * Makefile: New variable HTMLEXT to override the default 'htm' + extension for the manual in HTML format. + +2012-02-01 Erwin Waterlander <waterlan@xs4all.nl> + * Makefile, version.mk: Fix a compile error when debug + is enabled. Thanks to Maurizio Camisaschi and Lars Wendler. + See https://bugs.gentoo.org/400769 + * Makefile: Enable debugging info for gdb when DEBUG=1 + * man page: Small update in section RETURN VALUE. + +2012-01-27 Erwin Waterlander <waterlan@xs4all.nl> + * Version 5.3.2 + +2012-01-02 Erwin Waterlander <waterlan@xs4all.nl> + * os2.mak: Enable support for wild cards (-Zargs-wild). + Thanks to Steven H. Levine and Elbert Pol. + +2011-12-20 Erwin Waterlander <waterlan@xs4all.nl> + * querycp.c: Extra comment from Rugxulo. + * querycp.c: Undid change of 2011-11-12. MSYS version + behaves as Cygwin version. + +2011-12-15 Erwin Waterlander <waterlan@xs4all.nl> + * wccdos32.mak: New makefile for Open Watcom for DOS32. + +2011-12-06 Erwin Waterlander <waterlan@xs4all.nl> + * Makefile: Undo previous change for Darwin. Not restoring group and + owner may be destructive or a security risk. + * Makefile, common.[ch]: Dos2unix builds on MSYS now. + +2011-12-02 Erwin Waterlander <waterlan@xs4all.nl> + * Makefile: For MacOS the option -DNO_CHOWN has been be added to the compile time flags. + This is necessary because Darwin will create files with the + file-owner-group set to the file-owner-group of the directory - EVEN if + the caller is not a member of the group! Chowning *from* the group is ok, + chowning *to* the group is not - and this will make unix2dos fail when it + tries to restore the permissions. + Thanks to Wolf Geldmacher. + See bug report 3444337, https://sourceforge.net/tracker/?func=detail&atid=1234808&aid=3444337&group_id=292083 + +2011-11-16 Erwin Waterlander <waterlan@xs4all.nl> + * README.txt, man/man1/dos2unix.pod: Freshmeat changed name to Freecode. + +2011-11-12 Erwin Waterlander <waterlan@xs4all.nl> + * querycp.c: Fix for MSYS. + +2011-10-20 Erwin Waterlander <waterlan@xs4all.nl> + * querycp.c: Support OS/2, and Watcom C for Win32. + * wccwin32.mak: New makefile for Open Watcom for Win32. + +2011-08-22 Erwin Waterlander <waterlan@xs4all.nl> + * Makefile: Added RPM_OPT_FLAGS to LDFLAGS. Required for + cross-platform RPM package building. + +2011-08-20 Erwin Waterlander <waterlan@xs4all.nl> + * Home page URL: change to http://waterlan.home.xs4all.nl/dos2unix.html + +2011-08-09 Erwin Waterlander <waterlan@xs4all.nl> + * Version 5.3.1 + +2011-08-08 Julio A. Freyre-Gonzalez <jfreyreg@gmail.com> + * Spanish translation of messages and manual. + +2011-06-26 Erwin Waterlander <waterlan@xs4all.nl> + * bugfix: dos2unix changes ownership and permissions on file. + When an other user (e.g. root) than the owner has write permission + on the input file, dos2unix changes owner, group and umask in old + file mode to the other user's owner, group and umask who runs + dos2unix. Fixed only for Unix. Thanks to Christopher Williams. + See http://sourceforge.net/tracker/?func=detail&aid=3327171&group_id=292083&atid=1234808 + * Keep permissions also on Windows. Use chmod() i.s.o. fchmod(). + +2011-06-16 Erwin Waterlander <waterlan@xs4all.nl> + * Identical functions from dos2unix.c and unix2dos.c + are moved to common.c. + +2011-06-15 Erwin Waterlander <waterlan@xs4all.nl> + * Dos2unix and Unix2dos share the same language files. + +2011-05-04 Erwin Waterlander <waterlan@xs4all.nl> + * dos2unix.c: Removed redundant ConvertDosToUnixOldFile(). + * unix2dos.c: Removed redundant ConvertUnixToDosOldFile(). + +2011-04-26 Erwin Waterlander <waterlan@xs4all.nl> + * Version 5.3 + +2011-04-23 Erwin Waterlander <waterlan@xs4all.nl> + * Don't report an error when unlink() fails because a file + doesn't exist. + +2011-04-13 Erwin Waterlander <waterlan@xs4all.nl> + * Print system error when input file can't be openened. + For instance "Permission denied" + * Update manuals. + * Update translations. + +2011-04-04 Erwin Waterlander <waterlan@xs4all.nl> + * Always print and return an error when wrong command-line + options are used. Also in quiet mode. + * New option '--': Treat all following options as file names. + +2011-04-03 Erwin Waterlander <waterlan@xs4all.nl> + * Improved error reporting. Return system error when an error occurs. + * Don't quit after first error (like rm, ls, grep, tar). + * In quiet mode the return value is always zero. + +2011-03-27 Erwin Waterlander <waterlan@xs4all.nl> + * dos2unix.c/unix2dos.c: Check if symbolic links point to + regular files. + * dos2unix.c/unix2dos.c: Added short options -F, -R, -S. + * po: update translations. + +2011-03-24 Erwin Waterlander <waterlan@xs4all.nl> + * dos2unix.c/unix2dos.c: Changed options --follow, --no-follow, + to --follow-symlink, --replace-symlink, --skip-symlink. + * dos2unix.c/unix2dos.c: Options --force and --safe are only to + covert binary files or skip them. + * dos2unix.c/unix2dos.c: Non-regular files that are not symbolic + links are never converted. + +2011-03-23 Charles Wilson <cygwin@cwilson.fastmail.fm> + * dos2unix.c/unix2dos.c: New options --follow and --no-follow. + In follow mode dos2unix writes to the symlink target, instead + of replacing the symbolic link with an output file. + +2011-03-22 Charles Wilson <cygwin@cwilson.fastmail.fm> + * querycp.c: Behave on Cygwin same as on Linux. Default + code page in ISO mode is CP437. + +2011-03-21 Charles Wilson <cygwin@cwilson.fastmail.fm> + * dos2unix.c/unix2dos.c: + - Cygwin may define WIN32 (via include files). + - bugfix: Cygwin: set mode to binary in stdio mode conversion. + Needed in case non-Cygwin program launches dos2unix. + - bugfix: set failure mode if rename fails in quiet mode. + - New option: -s, --safe. Opposite of -f, --force. + * Makefile: Cleanup for Cygwin. + +2011-03-19 Erwin Waterlander <waterlan@xs4all.nl> + * Makefile: Install links instead of binary/manpage copies on Cygwin. + +2011-03-05 Erwin Waterlander <waterlan@xs4all.nl> + * man/man1/dos2unix.pod: Replace GPL with FreeBSD license. + * man/nl/man1/dos2unix.pod: Replace GPL with FreeBSD license. + +2011-03-04 Erwin Waterlander <waterlan@xs4all.nl> + * Version 5.2.1 + +2011-03-03 Erwin Waterlander <waterlan@xs4all.nl> + * Don't print used code page in quiet mode. + +2011-03-02 Erwin Waterlander <waterlan@xs4all.nl> + * Esperanto x-notation format is optional. Default is Unicode. + There is no installation of an 'eo-x' locale any more. + Add EO_XNOTATION=1 to make command-line to select x-notation. + It will change the format of the normal 'eo' locale from Unicode + to ASCII x-notation. + +2011-02-28 Erwin Waterlander <waterlan@xs4all.nl> + * Makefile: Make LFS optional with variable LFS (default on). + * dos2unix.c/unix2dos.c: Print file name with stat() system error. + +2011-02-26 Erwin Waterlander <waterlan@xs4all.nl> + * dos2unix.c/unix2dos.c: Report system error when stat() fails. + * Makefile: Enable 64 bit file system interface (_FILE_OFFSET_BITS=64). + This enables opening files larger than 2GB on 32 bit systems, provided + the system has Large File Support (LFS). See also section 1.3.4 + "Feature Test Macros" of The GNU C Library manual. + http://www.gnu.org/s/libc/manual/html_node/Feature-Test-Macros.html + +2011-02-22 Erwin Waterlander <waterlan@xs4all.nl> + * In debug mode file mode is printed (compile with DEBUG=1). + +2011-02-19 Erwin Waterlander <waterlan@xs4all.nl> + * Makefile: Generation of PostScript and PDF is optional. + This removes dependency on Groff and GhostScript (thanks to Philipp Thomas). + +2011-02-04 Erwin Waterlander <waterlan@xs4all.nl> + * Makefile: Replace GPL (accidently patched in) with FreeBSD license. + * man/man1/Makefile: Fix perl command for for DOS alike file systems + (Can't do inplace edit without backup.). (thanks to Elbert Pol) + +2011-01-31 Erwin Waterlander <waterlan@xs4all.nl> + * Version 5.2 + +2011-01-19 Erwin Waterlander <waterlan@xs4all.nl> + * Update manual. + +2011-01-13 Rugxulo <rugxulo@gmail.com> + * querycp.c: Active code page detection. DOS 16 bit, OpenWatcom. + +2011-01-12 Erwin Waterlander <waterlan@xs4all.nl> + * querycp.c: Detect active code page for ISO mode on Windows. + +2011-01-12 Rugxulo <rugxulo@gmail.com> + * querycp.c: Detect active code page for ISO mode. DOS 32 bit, DJGPP. + +2011-01-11 Erwin Waterlander <waterlan@xs4all.nl> + * New ISO conversion modes DOS CP860 (Portuguese) + and CP863 (French Canadian). + +2011-01-10 Erwin Waterlander <waterlan@xs4all.nl> + * New ISO conversion mode DOS CP865 (Nordic). + +2011-01-07 Erwin Waterlander <waterlan@xs4all.nl> + * ISO mode CP437: fix conversion of non-breaking space (NBSP) + * New ISO conversion modes: DOS CP850 (Western European) and Windows + CP1252 (Western European). + * SunOS compatible command-line options -ascii, -iso, -7, -437, -850. + +2011-01-04 Erwin Waterlander <waterlan@xs4all.nl> + * 7bit and iso mode can be used in Mac mode. + +2010-11-22 Jari Aalto <jari.aalto@cante.net> + * Small updates man page and Makefile. + +2010-11-21 Ben Pfaff <blp@cs.stanford.edu> + * Don't indicate text files with ASCII Form Feed control + characters (^L) as binary. + Form feed characters are fairly common in GNU software text files, + because the GNU coding standards advice to use form feeds to + divide text into pages. + +2010-11-15 Erwin Waterlander <waterlan@xs4all.nl> + * Put full copyright text in *.h source files (FSF's recommendation). + Thanks to Jari Aalto <jari.aalto@cante.net>. + * Don't include generated documentation files in Unix source package. + * Create a source package in DOS text format. + +2010-08-18 Erwin Waterlander <waterlan@xs4all.nl> + * version 5.1.1 + +2010-07-23 Erwin Waterlander <waterlan@xs4all.nl> + * Added Dutch translation of the manual. + +2010-07-19 Erwin Waterlander <waterlan@xs4all.nl> + * MinGW-w64 Makefile added for Windows 64 bit port. + +2010-06-20 Erwin Waterlander <waterlan@xs4all.nl> + * Don't ship po/*.mo files in source package. + * Win32 binary package uses patched MinGW's libintl, with builtin + relocation support. See http://www.xs4all.nl/~waterlan/libintl.html + +2010-04-22 Erwin Waterlander <waterlan@xs4all.nl> + * Support compilation in DOSBox (8.3 file names where needed). + +2010-04-14 Erwin Waterlander <waterlan@xs4all.nl> + * Fixed compilation on Darwin OS. Thanks to Marc Gianzero. + +2010-04-03 Erwin Waterlander <waterlan@xs4all.nl> + * version 5.1 + +2010-03-22 Erwin Waterlander <waterlan@xs4all.nl> + * Man page generation from Perl POD file. + Thanks to Jari Aalto <jari.aalto@cante.net> + * Merge dos2unix and unix2dos man pages. + +2010-03-17 Erwin Waterlander <waterlan@xs4all.nl> + * Add localization information to manual. + +2010-03-16 Rugxulo <rugxulo@gmail.com> + * Added Esperanto translation. + +2010-03-13 Erwin Waterlander <waterlan@xs4all.nl> + * DJGPP, dos32bit: Create 'stubs' for mac2unix and unix2mac. + See also http://www.delorie.com/djgpp/v2faq/faq22_5.html + Thanks to Rugxulo <rugxulo@gmail.com> + +2010-03-11 Erwin Waterlander <waterlan@xs4all.nl> + * Allow to set options in stdio mode. + * dos2unix: bugfix MAC mode: Don't change DOS line endings. + * Display help if a wrong option was used. + +2010-03-04 Erwin Waterlander <waterlan@xs4all.nl> + * Port to 16 bit DOS, using OpenWatcom. + +2010-03-03 Erwin Waterlander <waterlan@xs4all.nl> + * Port to 16 bit DOS, using Borland C. + +2010-02-16 Erwin Waterlander <waterlan@xs4all.nl> + * version 5.0 + +2010-02-15 Erwin Waterlander <waterlan@xs4all.nl> + * unix2dos: Fix problem of reading Mac files. + * unix2dos: Added command 'unix2mac'. + * unix2dos: Can use DOS2UNIX_LOCALEDIR i.s.o. UNIX2DOS_LOCALEDIR. + * dos2unix: 'mac2unix' command can have a prefix. + * Makefile: mac2unix and unix2mac are installed as soft links. + +2010-02-13 Erwin Waterlander <waterlan@xs4all.nl> + * Bundled dos2unix and unix2dos in one package. + * dos2unix/unix2dos : Cleanup messages and manual. + * dos2unix: Option -l --newline also works in MAC mode. + * unix2dos: Added option -l, --newline. + * unix2dos: Added MAC mode. Convert Unix line endings + to Mac line endings. + +2010-02-10 Erwin Waterlander <waterlan@xs4all.nl> + * unix2dos: Makefile : + - Use GNU standard directory variables everywhere. + - New target 'dist-tbz' creates bzip2 compressed archive. + +2010-02-10 Philipp Thomas <psmt@opensuse.org> + * unix2dos: po/de.po : Added German translation. + * unix2dos: Makefile : + - Added $(RPM_OPT_FLAGS) to CFLAGS. + - Use DESTDIR only in install and uninstall targets (not in variables, + this is more common practice). + +2010-02-03 Erwin Waterlander <waterlan@xs4all.nl> + * dos2unix: Makefile : + - Use GNU standard directory variables everywhere. + +2010-02-03 Philipp Thomas <psmt@opensuse.org> + * dos2unix: po/de.po : Added German translation. + * dos2unix: Makefile : + - Use GNU standard directory variable 'datadir' i.s.o. 'sharedir'. + - Added $(RPM_OPT_FLAGS) to CFLAGS. + - New target 'dist-tbz' creates bzip2 compressed archive. + - Use DESTDIR only in install and uninstall targets (not in variables, + this is more common practice). + +2010-02-02 Erwin Waterlander <waterlan@xs4all.nl> + * dos2unix/unix2dos: Update Dutch translation. + +2010-01-24 Erwin Waterlander <waterlan@xs4all.nl> + * dos2unix/unix2dos: version 4.1.2 + +2010-01-22 Tim Waugh <twaugh@redhat.com> + * dos2unix/unix2dos: Preserve file mode in 'new file mode'. + * dos2unix/unix2dos: Makefile: Allow CFLAGS to be set externally. + +2010-01-21 Erwin Waterlander <waterlan@xs4all.nl> + * dos2unix/unix2dos: version 4.1.1 + * dos2unix/unix2dos: Fix compilation on FreeBSD. + * dos2unix/unix2dos: Changed home page URL to http://www.xs4all.nl/~waterlan/dos2unix.html + +2009-12-28 Erwin Waterlander <waterlan@xs4all.nl> + * dos2unix/unix2dos: version 4.1 + * dos2unix/unix2dos: Automatically skip binary files. + * dos2unix/unix2dos: Automatically skip non-regular files. + * dos2unix/unix2dos: New option: -f --force: Force conversion of all files. + * dos2unix/unix2dos: Option -h: Print options in alphabetical order. + * dos2unix/unix2dos: Update manual. + * dos2unix/unix2dos: ISO mode: + - Non-convertable characters are converted to a dot. + Old conversion risked conversion to unwanted ISO C1 + control characters from ISO 6429. + - Fixed wrong conversion of Interpunct. + - Don't convert ASCII control characters + DC4 (Pilcrow, 0x14) and NAK (Section-sign, 0x15). + +2009-12-21 Erwin Waterlander <waterlan@xs4all.nl> + * dos2unix/unix2dos: version 4.0.1 + * dos2unix/unix2dos: man page improvements: Thanks to Jari Aalto <jari.aalto@cante.net>. + - Replace hyphens with minus signs (look like dashes) where needed. + - Options in alphabetical order. + * dos2unix/unix2dos: man page: Update ISO mode information. + * dos2unix/unix2dos: Option -V prints localedir used. + * dos2unix: Localedir can be overruled with environment variable + DOS2UNIX_LOCALEDIR. + * unix2dos: Localedir can be overruled with environment variable + UNIX2DOS_LOCALEDIR. + * dos2unix/unix2dos: Fixed two wrong conversions in ISO mode: + - Greek mu. + - Closing guillemet (angle quotation mark, >>). + * dos2unix/unix2dos: Port to OS/2 Warp: Thanks to Elbert Pol <elbertdotpol@gmail.com>. + * dos2unix/unix2dos: Makefiles: Added target 'strip'. + +2009-12-15 Erwin Waterlander <waterlan@xs4all.nl> + * dos2unix/unix2dos: version 4.0 + * dos2unix/unix2dos: Added internationalisation using gettext. + * dos2unix/unix2dos: Added Dutch translation. + * dos2unix/unix2dos: Ported to Win32 using Mingw32 <http://www.mingw.org/> + * dos2unix/unix2dos: Ported to DOS using DJGPP <http://www.delorie.com/djgpp/> + * dos2unix/unix2dos: Fixed problem in DOS/Windows stdio mode. + * dos2unix/unix2dos: New option -L/--license that prints software license. + * dos2unix/unix2dos: Code cleanup + * dos2unix/unix2dos: Update manual + +2009-12-04 Erwin Waterlander <waterlan@xs4all.nl> + * dos2unix: version 3.2 + * unix2dos: version 2.3 + * dos2unix/unix2dos: version.mk: New file. + * dos2unix/unix2dos: README: New file. + * dos2unix/unix2dos: ChangeLog : New file. + * dos2unix: INSTALL: Updated. + * dos2unix/unix2dos: Makefile: Makefile according GNU standards. + * unix2dos: INSTALL: New file. + * dos2unix: Applied all patches from RedHat: + - use mkstemp i.s.o. mktemp: Nov 17 2000 Tim Powers <timp@redhat.com> + - segfault: Jan 17 2002 Bernhard Rosenkraenzer <bero@redhat.com> + - safeconv: Oct 20 2004 Miloslav Trmac <mitr@redhat.com> + - manpage-update: Oct 6 2004 Mike A. Harris <mharris@redhat.com> + - preserve-file-modes: Feb 6 2007 Tim Waugh <twaugh@redhat.com> + - tmppath: Apr 13 2005 Tim Waugh <twaugh@redhat.com> + - c-missing-arg: Jan 18 2008 Tim Waugh <twaugh@redhat.com> + - Remove trailing white space. + * unix2dos: Applied all patches from RedHat: + - use mkstemp i.s.o. mktemp: Nov 17 2000 Tim Powers <timp@redhat.com> + - segfault: Jan 17 2002 Bernhard Rosenkraenzer <bero@redhat.com> + - manpage-update: Oct 6 2004 Mike A. Harris <mharris@redhat.com> + - preserve-file-modes: Oct 11 2004 Tim Waugh <twaugh@redhat.com> + - tmppath: Apr 13 2005 Tim Waugh <twaugh@redhat.com> + - Remove trailing white space. + +1998-11-19 Christian Wurll <wurll@ira.uka.de> + * dos2unix: version 3.1 + * dos2unix: Added extra newline if ^M occurs + +1998-02-04 Bernd Johannes Wuebben <wuebben@kde.org> + * dos2unix: version 3.0 + * dos2unix: Added Mac text file translation, i.e. \r to \n conversion + +1995-03-30 Benjamin Lin <blin@socs.uts.edu.au> + * dos2unix/unix2dos: version 2.2 + * dos2unix: Fixed a bug in 2.1 where in new file mode, if outfile already exists + * dos2unix: conversion can not be completed properly. + * unix2dos: Conversion from SunOS charset implemented. + +1995-03-29 Benjamin Lin <blin@socs.uts.edu.au> + * dos2unix: version 2.1 + * dos2unix: Conversion to SunOS charset implemented. + +1995-03-19 Benjamin Lin <blin@socs.uts.edu.au> + * dos2unix/unix2dos: version 2.0 + * dos2unix/unix2dos: Rewritten from scratch. + +1995-03-16 Benjamin Lin <blin@socs.uts.edu.au> + * dos2unix: version 1.2 + * unix2dos: version 1.3 + * dos2unix/unix2dos: Modified to more conform to UNIX style. + +1995-03-09 Benjamin Lin <blin@socs.uts.edu.au> + * unix2dos: version 1.2 + * unix2dos: Fixed minor typo error + +1994-12-20 Benjamin Lin <blin@socs.uts.edu.au> + * dos2unix/unix2dos: version 1.1 + * dos2unix/unix2dos: Cleaned up for Borland C/C++ 4.02 + +1989-10-04 John Birchfield <jb@koko.csustan.edu> + * dos2unix/unix2dos: version 1.0 + diff --git a/INSTALL.txt b/INSTALL.txt new file mode 100644 index 0000000..d70dcd0 --- /dev/null +++ b/INSTALL.txt @@ -0,0 +1,195 @@ +PREREQUISITES + + Using GCC: + Required + * gcc : GNU C compiler + * GNU binutils : A collection of binary tools + * GNU make : make + * sh : POSIX type shell + * GNU coreutils: Core utilities package (chmod, install, mkdir, + mv, rm, uname) + * sed : Stream editor + * perl : Practical Extraction and Report Language (perlpod) + + Optional (depending on build targets): + * gettext : Framework to help GNU packages produce multi- + lingual messages. + * groff : GNU troff text formatting system. + * ghostscript : An interpreter for the PostScript language and + for PDF (ps2pdf) + + Alternative for Windows/DOS: + * Open Watcom : http://www.openwatcom.org/ + + Required for DOS16 bit: + * Open Watcom : http://www.openwatcom.org/ + + +BASIC INSTALLATION + + To build the program type: + + make + + + To strip the executables: + + make strip + + + To install: + + make install + + + Clean: + + make clean + + + Mostly clean. The target mostlyclean will preserve the generated + documentation files. + + make mostlyclean + + +INSTALLATION NAMES + + By default the 'install' target will install the program in + /usr/bin, the language files in /usr/share/locale + and the man page in /usr/share/man. You can specify an + installation prefix other than /usr by modifying the + 'prefix' variable. An Example: + + make prefix=$HOME clean all + make prefix=$HOME install + +DEBUG + + A debug enabled build can be made by adding DEBUG=1 + to the make command. Example: + + make clean install DEBUG=1 + + With debug enabled dos2unix will print extra information + and you can debug the source code in gdb. + +NATIVE LANGUAGE SUPPORT + + Native Language Support (NLS) is by default enabled. + To disable NLS add ENABLE_NLS=. Example: + + make clean install ENABLE_NLS= + +LARGE FILE SUPPORT + + Large File Support (LFS) is by default enabled. This enables + the use of 64 bit file system interface on 32 bit systems. + This makes it possible to open files larger than 2GB on 32 bit + systems, provided the OS has LFS support builtin. + To disable LFS make the LFS variable empty. Example: + + Disable LFS: + make clean install LFS= + +UNICODE SUPPORT + + Unicode UTF-16 support is by default enabled for Windows and Unix. To + disable make the UCS variable (Universal Character Set) empty. + + Disable Unicode: + make clean install UCS= + + Unicode UTF-16 is not supported by the DOS versions. + + +ESPERANTO X-NOTATION + + For systems that don't support the Unicode or Latin-3 character set, + Esperanto messages in ASCII x-notation format can be selected. Add + EO_XNOTATION=1 tot the make command-line. It will change the format of the + normal dos2unix 'eo' locale from Unicode to ASCII x-notation. + + make clean install EO_XNOTATION=1 + +DOCUMENTATION + + Manual pages are generated from Perl POD files. By default + the manual pages are are created in text and html format. + To create a manual in PDF format type: + + make pdf + + PDF generation requires GhostScript to be installed. + +WINDOWS PORT + + To compile a version for Windows, get the Mingw compiler + <http://www.mingw.org>, and use makefile mingw.mak: + + make -f mingw.mak clean + make -f mingw.mak + make -f mingw.mak strip + make -f mingw.mak install + + Or get the Open Watcom C compiler <http://www.openwatcom.org> + and type: + + wmake -f wccwin32.mak clean + wmake -f wccwin32.mak + + + The win32 binaries built with MinGW32 are packed with a patched version of + MinGW's libintl-8.dll that has builtin support for relocation. See also + http://waterlan.home.xs4all.nl/libintl.html and + http://sourceforge.net/tracker/?func=detail&atid=302435&aid=3003879&group_id=2435 + + +WINDOWS 64 BIT PORT + + To compile a version for Windows, get the Mingw-w64 compiler + <http://mingw-w64.sourceforge.net>, and use makefile mingw64.mak: + + make -f mingw64.mak clean + make -f mingw64.mak + make -f mingw64.mak strip + make -f mingw64.mak install + +DOS PORT, 32 BIT + + To compile a version for DOS, get the DJGPP compiler + <http://www.delorie.com/djgpp/>, and use makefile djgpp.mak: + + make -f djgpp.mak clean + make -f djgpp.mak + make -f djgpp.mak strip + make -f djgpp.mak install + + Or use the OpenWatcom compiler <http://www.openwatcom.org>. + + wmake -f wccdos32.mak clean + wmake -f wccdos32.mak + +DOS PORT, 16 BIT + + To compile a version for DOS, use the Borland C compiler 3.1 or 4.0, + and use makefile bcc.mak: + + make -f bcc.mak clean + make -f bcc.mak + + Or use the OpenWatcom compiler <http://www.openwatcom.org>. + + wmake -f wccdos16.mak clean + wmake -f wccdos16.mak + +OS/2 PORT + + Using Paul Smedley's build environment, available + at <http://os2ports.smedley.info> + + make -f os2.mak clean + make -f os2.mak + make -f os2.mak strip + make -f os2.mak install + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..dbabab8 --- /dev/null +++ b/Makefile @@ -0,0 +1,473 @@ +# Author: Erwin Waterlander +# +# Copyright (C) 2009-2012 Erwin Waterlander +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice in the documentation and/or other materials provided with +# the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Description +# +# This is a GNU Makefile that uses GNU compilers, linkers and cpp. The +# platform specific issues are determined by the various OS teets that +# rely on the uname(1) command and directory locations. +# +# Set additional flags for the build with variables CFLAGS_USER, +# DEFS_USER and LDFLAGS_USER. + +include version.mk + +CC = gcc +CPP = cpp +CPP_FLAGS_POD = ALL +STRIP = strip + +PACKAGE = dos2unix +UNIX2DOS = unix2dos +MAC2UNIX = mac2unix +UNIX2MAC = unix2mac + +# Native Language Support (NLS) +ENABLE_NLS = 1 +# Large File Support (LFS) +LFS = 1 +DEBUG = 0 +UCS = 1 + +EXE= + +BIN = $(PACKAGE)$(EXE) +UNIX2DOS_BIN = $(UNIX2DOS)$(EXE) +MAC2UNIX_BIN = $(MAC2UNIX)$(EXE) +UNIX2MAC_BIN = $(UNIX2MAC)$(EXE) + +# DJGPP support linking of .EXEs via 'stubify'. +# See djgpp.mak and http://www.delorie.com/djgpp/v2faq/faq22_5.html + +LINK = ln -sf +LINK_MAN = $(LINK) + +prefix = /usr +exec_prefix = $(prefix) +bindir = $(exec_prefix)/bin +datarootdir = $(prefix)/share +datadir = $(datarootdir) + +docsubdir = $(PACKAGE)-$(DOS2UNIX_VERSION) +docdir = $(datarootdir)/doc/$(docsubdir) +localedir = $(datarootdir)/locale +mandir = $(datarootdir)/man +man1dir = $(mandir)/man1 +manext = .1 +man1ext = .1 + +ifdef ENABLE_NLS + POT = po/$(PACKAGE).pot + POFILES = $(wildcard po/??.po) + MOFILES = $(patsubst %.po,%.mo,$(POFILES)) + EOX_POFILES = po/eo-x.po + NLSSUFFIX = -nls +endif + +HTMLEXT = htm +DOCFILES = $(PACKAGE).txt $(PACKAGE).$(HTMLEXT) +INSTALL_OBJS_DOC = README.txt NEWS.txt ChangeLog.txt COPYING.txt TODO.txt BUGS.txt $(DOCFILES) + +#PODFILES = man/man1/dos2unix.pod $(wildcard man/*/man1/dos2unix.pod) +PODFILES = $(wildcard man/*/man1/dos2unix.pod) +MANFILES = $(patsubst %.pod,%.1,$(PODFILES)) + +# On some systems (e.g. FreeBSD 4.10) GNU install is installed as `ginstall'. +INSTALL = install + +# On some systems (e.g. GNU Win32) GNU mkdir is installed as `gmkdir'. +MKDIR = mkdir + +ifdef ENABLE_NLS + DOS2UNIX_NLSDEFS = -DENABLE_NLS -DLOCALEDIR=\"$(localedir)\" -DPACKAGE=\"$(PACKAGE)\" +endif + +VERSIONSUFFIX = -bin + +# ......................................................... OS flags ... + +OS = + +ifndef OS +ifneq (, $(wildcard /boot/vmlinuz*)) + OS = linux +endif +endif + +ifndef OS +ifeq ($(findstring CYGWIN,$(shell uname)),CYGWIN) + OS = cygwin +endif +endif + +ifeq (cygwin,$(OS)) +ifdef ENABLE_NLS + LDFLAGS_EXTRA = -lintl -liconv -Wl,--enable-auto-import +endif + EXE = .exe + # allow non-cygwin clients which do not understand cygwin + # symbolic links to launch applications... + LINK = ln -f + # but use symbolic links for man pages, since man client + # IS a cygwin app and DOES understand symlinks. + LINK_MAN = ln -fs + # Cygwin packaging standard avoids version numbers on + # documentation directories. + docsubdir = $(PACKAGE) + VERSIONSUFFIX = -cygwin +endif + +ifndef OS +ifeq ($(findstring MSYS,$(shell uname)),MSYS) + OS = msys + EXE = .exe + VERSIONSUFFIX = -msys + EO_XNOTATION=1 + UCS = +ifdef ENABLE_NLS + LDFLAGS_EXTRA = -lintl -liconv +endif +endif +endif + +ifndef OS +ifeq ($(findstring MINGW32,$(shell uname)),MINGW32) + OS = mingw32 + prefix=c:/usr/local + EXE = .exe + VERSIONSUFFIX = -win32 + LINK = cp -f + EO_XNOTATION=1 +ifdef ENABLE_NLS + LDFLAGS_EXTRA = -lintl -liconv + ZIPOBJ_EXTRA = bin/libintl-8.dll bin/libiconv-2.dll +endif +endif +endif + +ifndef OS +ifeq ($(shell uname),MS-DOS) + OS = msdos + prefix=c:/djgpp + EXE = .exe + VERSIONSUFFIX = -dos32 + LINK_MAN = cp -f + docsubdir = dos2unix + EO_XNOTATION=1 + UCS = + ZIPOBJ_EXTRA = bin/cwsdpmi.exe +ifdef ENABLE_NLS + LDFLAGS_EXTRA = -lintl -liconv +endif +endif +endif + +ifndef OS +ifeq (FreeBSD, $(shell uname -s)) + OS = freebsd +ifdef ENABLE_NLS + CFLAGS_OS = -I/usr/local/include + LDFLAGS_EXTRA = -lintl -L/usr/local/lib +endif +endif +endif + +ifeq (Darwin, $(shell uname -s)) + OS = Darwin +ifdef ENABLE_NLS + CFLAGS_OS = -I/usr/local/include + LDFLAGS_EXTRA = -lintl -L/usr/local/lib +endif +endif + + +ifndef OS +ifneq (, $(wildcard /opt/csw)) + OS = sun +endif +endif + +ifeq (sun,$(OS)) + # Running under SunOS/Solaris + LDFLAGS_EXTRA = -lintl +endif + +ifndef OS +ifeq (HP-UX, $(shell uname -s)) + OS = hpux +endif +endif + +ifeq (hpux,$(OS)) + # Running under HP-UX + EXTRA_DEFS += -Dhpux -D_HPUX_SOURCE +endif + +ifndef OS + OS = unknown +endif + +# ............................................................ flags ... + +# For systems that don't support Unicode or Latin-3, select +# Esperanto in X-notation format: EO_XNOTATION=1 + +ifdef EO_XNOTATION +EO_NOTATION = -x +endif + +CFLAGS_USER = +CFLAGS = -O2 -Wall $(RPM_OPT_FLAGS) $(CPPFLAGS) $(CFLAGS_USER) + +EXTRA_CFLAGS = -DVER_REVISION=\"$(DOS2UNIX_VERSION)\" \ + -DVER_DATE=\"$(DOS2UNIX_DATE)\" \ + -DVER_AUTHOR=\"$(DOS2UNIX_AUTHOR)\" \ + -DDEBUG=$(DEBUG) \ + $(CFLAGS_OS) + +ifeq ($(DEBUG), 1) + EXTRA_CFLAGS += -g +endif + +ifdef STATIC + EXTRA_CFLAGS += -static +endif + +ifdef UCS + EXTRA_CFLAGS += -DD2U_UNICODE +endif + +ifdef LFS + EXTRA_CFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +endif + +LDFLAGS_USER = +LDFLAGS = $(RPM_OPT_FLAGS) $(LDFLAGS_EXTRA) $(LDFLAGS_USER) + +DEFS_USER = +DEFS = $(EXTRA_DEFS) $(DEFS_USER) + +# .......................................................... targets ... + +all: $(BIN) $(MAC2UNIX_BIN) $(UNIX2DOS_BIN) $(UNIX2MAC_BIN) $(DOCFILES) $(MOFILES) $(EOX_POFILES) $(MANFILES) man/man1/dos2unix.1 + +common.o : common.c common.h + $(CC) $(DEFS) $(EXTRA_CFLAGS) $(DOS2UNIX_NLSDEFS) $(CFLAGS) -c $< -o $@ + +querycp.o : querycp.c querycp.h + $(CC) $(DEFS) $(EXTRA_CFLAGS) $(DOS2UNIX_NLSDEFS) $(CFLAGS) -c $< -o $@ + +dos2unix.o : dos2unix.c dos2unix.h querycp.h common.h + $(CC) $(DEFS) $(EXTRA_CFLAGS) $(DOS2UNIX_NLSDEFS) $(CFLAGS) -c $< -o $@ + +unix2dos.o : unix2dos.c unix2dos.h querycp.h common.h + $(CC) $(DEFS) $(EXTRA_CFLAGS) $(DOS2UNIX_NLSDEFS) $(CFLAGS) -c $< -o $@ + +$(BIN): dos2unix.o querycp.o common.o + $(CC) $+ $(LDFLAGS) -o $@ + +$(UNIX2DOS_BIN): unix2dos.o querycp.o common.o + $(CC) $+ $(LDFLAGS) -o $@ + +$(MAC2UNIX_BIN) : $(BIN) + $(LINK) $< $@ + +%.1 : %.pod + $(MAKE) -C man/man1 + +$(UNIX2MAC_BIN) : $(UNIX2DOS_BIN) + $(LINK) $< $@ + +mofiles: $(MOFILES) + +html: $(PACKAGE).$(HTMLEXT) + +txt: $(PACKAGE).txt + +ps: $(PACKAGE).ps + +pdf: $(PACKAGE).pdf + +doc: $(DOCFILES) $(MANFILES) man/man1/dos2unix.1 + +tags: $(POT) + +merge: $(POFILES) $(EOX_POFILES) + +po/%.po : $(POT) + msgmerge -U $@ $(POT) --backup=numbered + # change timestamp in case .po file was not updated. + touch $@ + +%.mo : %.po + msgfmt -c $< -o $@ + +po/eo.mo : po/eo$(EO_NOTATION).po + msgfmt -c $< -o $@ + +$(POT) : dos2unix.c unix2dos.c common.c + xgettext -C --keyword=_ $+ -o $(POT) + +%.txt : man/man1/%.pod + LC_CTYPE=C pod2text $< > $@ + +%.ps : man/man1/%.1 + groff -man $< -T ps > $@ + +%.pdf: %.ps + ps2pdf $< $@ + +%.$(HTMLEXT) : man/man1/%.pod + pod2html --title="$(PACKAGE) $(DOS2UNIX_VERSION) - DOS/MAC to UNIX and vice versa text file format converter" $< > $@ + +install: all + $(MKDIR) -p -m 755 $(DESTDIR)$(bindir) + $(INSTALL) -m 755 $(BIN) $(DESTDIR)$(bindir) + $(INSTALL) -m 755 $(UNIX2DOS_BIN) $(DESTDIR)$(bindir) +ifeq ($(LINK),cp -f) + $(INSTALL) -m 755 $(MAC2UNIX_BIN) $(DESTDIR)$(bindir) + $(INSTALL) -m 755 $(UNIX2MAC_BIN) $(DESTDIR)$(bindir) +else + cd $(DESTDIR)$(bindir); $(LINK) $(BIN) $(MAC2UNIX_BIN) + cd $(DESTDIR)$(bindir); $(LINK) $(UNIX2DOS_BIN) $(UNIX2MAC_BIN) +endif + $(MKDIR) -p -m 755 $(DESTDIR)$(man1dir) + $(INSTALL) -m 644 man/man1/$(PACKAGE).1 $(DESTDIR)$(man1dir) +ifeq ($(LINK_MAN),cp -f) + $(INSTALL) -m 644 man/man1/$(PACKAGE).1 $(DESTDIR)$(man1dir)/$(MAC2UNIX).1 + $(INSTALL) -m 644 man/man1/$(PACKAGE).1 $(DESTDIR)$(man1dir)/$(UNIX2DOS).1 + $(INSTALL) -m 644 man/man1/$(PACKAGE).1 $(DESTDIR)$(man1dir)/$(UNIX2MAC).1 +else + cd $(DESTDIR)$(man1dir); $(LINK_MAN) $(PACKAGE).1 $(MAC2UNIX).1 + cd $(DESTDIR)$(man1dir); $(LINK_MAN) $(PACKAGE).1 $(UNIX2DOS).1 + cd $(DESTDIR)$(man1dir); $(LINK_MAN) $(PACKAGE).1 $(UNIX2MAC).1 +endif + $(foreach manfile, $(MANFILES), $(MKDIR) -p -m 755 $(DESTDIR)$(datarootdir)/$(dir $(manfile)) ;) + $(foreach manfile, $(MANFILES), $(INSTALL) -m 644 $(manfile) $(DESTDIR)$(datarootdir)/$(dir $(manfile)) ;) + $(foreach manfile, $(MANFILES), cd $(DESTDIR)$(datarootdir)/$(dir $(manfile)) ; $(LINK_MAN) $(PACKAGE).1 $(MAC2UNIX).1 ;) + $(foreach manfile, $(MANFILES), cd $(DESTDIR)$(datarootdir)/$(dir $(manfile)) ; $(LINK_MAN) $(PACKAGE).1 $(UNIX2DOS).1 ;) + $(foreach manfile, $(MANFILES), cd $(DESTDIR)$(datarootdir)/$(dir $(manfile)) ; $(LINK_MAN) $(PACKAGE).1 $(UNIX2MAC).1 ;) +ifdef ENABLE_NLS + @echo "-- install-mo" + $(foreach mofile, $(MOFILES), $(MKDIR) -p -m 755 $(DESTDIR)$(localedir)/$(basename $(notdir $(mofile)))/LC_MESSAGES ;) + $(foreach mofile, $(MOFILES), $(INSTALL) -m 644 $(mofile) $(DESTDIR)$(localedir)/$(basename $(notdir $(mofile)))/LC_MESSAGES/$(PACKAGE).mo ;) +endif + @echo "-- install-doc" + $(MKDIR) -p -m 755 $(DESTDIR)$(docdir) + $(INSTALL) -m 644 $(INSTALL_OBJS_DOC) $(wildcard $(PACKAGE).ps) $(wildcard $(PACKAGE).pdf) $(DESTDIR)$(docdir) + +uninstall: + @echo "-- target: uninstall" + -rm -f $(DESTDIR)$(bindir)/$(BIN) + -rm -f $(DESTDIR)$(bindir)/$(MAC2UNIX_BIN) + -rm -f $(DESTDIR)$(bindir)/$(UNIX2DOS_BIN) + -rm -f $(DESTDIR)$(bindir)/$(UNIX2MAC_BIN) +ifdef ENABLE_NLS + $(foreach mofile, $(MOFILES), rm -f $(DESTDIR)$(localedir)/$(basename $(notdir $(mofile)))/LC_MESSAGES/$(PACKAGE).mo ;) +endif + -rm -f $(DESTDIR)$(mandir)/man1/$(PACKAGE).1 + -rm -f $(DESTDIR)$(mandir)/man1/$(MAC2UNIX).1 + -rm -f $(DESTDIR)$(mandir)/man1/$(UNIX2DOS).1 + -rm -f $(DESTDIR)$(mandir)/man1/$(UNIX2MAC).1 + $(foreach manfile, $(MANFILES), rm -f $(DESTDIR)$(datarootdir)/$(manfile) ;) + -rm -rf $(DESTDIR)$(docdir) + +mostlyclean: + rm -f *.o + rm -f $(BIN) $(UNIX2DOS_BIN) $(MAC2UNIX_BIN) $(UNIX2MAC_BIN) + rm -f *.bak *~ + rm -f *.tmp + rm -f man/man1/*.bak man/man1/*~ + rm -f man/*/man1/*.bak man/*/man1/*~ + rm -f po/*.bak po/*~ + rm -f po/*.mo + +clean: mostlyclean + rm -f $(DOCFILES) $(PACKAGE).ps $(PACKAGE).pdf + rm -f man/man1/*.1 + rm -f man/*/man1/*.1 + +distclean: clean + +maintainer-clean: distclean + +realclean: maintainer-clean + + +ZIPOBJ = bin/$(BIN) \ + bin/$(MAC2UNIX_BIN) \ + bin/$(UNIX2DOS_BIN) \ + bin/$(UNIX2MAC_BIN) \ + share/man/man1/$(PACKAGE).1 \ + share/man/man1/$(MAC2UNIX).1 \ + share/man/man1/$(UNIX2DOS).1 \ + share/man/man1/$(UNIX2MAC).1 \ + share/man/*/man1/$(PACKAGE).1 \ + share/man/*/man1/$(MAC2UNIX).1 \ + share/man/*/man1/$(UNIX2DOS).1 \ + share/man/*/man1/$(UNIX2MAC).1 \ + share/doc/$(docsubdir) \ + $(ZIPOBJ_EXTRA) + +ifdef ENABLE_NLS +ZIPOBJ += share/locale/*/LC_MESSAGES/$(PACKAGE).mo +endif + +ZIPFILE = $(PACKAGE)-$(DOS2UNIX_VERSION)$(VERSIONSUFFIX)$(NLSSUFFIX).zip +TGZFILE = $(PACKAGE)-$(DOS2UNIX_VERSION)$(VERSIONSUFFIX)$(NLSSUFFIX).tar.gz +TBZFILE = $(PACKAGE)-$(DOS2UNIX_VERSION)$(VERSIONSUFFIX)$(NLSSUFFIX).tar.bz2 + +dist-zip: + rm -f $(prefix)/$(ZIPFILE) + cd $(prefix) ; unix2dos share/doc/$(docsubdir)/*.txt share/man/man1/$(PACKAGE).1 share/man/man1/$(MAC2UNIX).1 share/man/man1/$(UNIX2DOS).1 share/man/man1/$(UNIX2MAC).1 + cd $(prefix) ; unix2dos share/doc/$(docsubdir)/*.$(HTMLEXT) + cd $(prefix) ; unix2dos share/man/*/man1/$(PACKAGE).1 share/man/*/man1/$(MAC2UNIX).1 share/man/*/man1/$(UNIX2DOS).1 share/man/*/man1/$(UNIX2MAC).1 + cd $(prefix) ; zip -r $(ZIPFILE) $(ZIPOBJ) + mv -f $(prefix)/$(ZIPFILE) .. + +dist-tgz: + cd $(prefix) ; dos2unix share/doc/$(docsubdir)/*.txt share/man/man1/$(PACKAGE).1 share/man/man1/$(MAC2UNIX).1 share/man/man1/$(UNIX2DOS).1 share/man/man1/$(UNIX2MAC).1 + cd $(prefix) ; dos2unix share/man/*/man1/$(PACKAGE).1 share/man/*/man1/$(MAC2UNIX).1 share/man/*/man1/$(UNIX2DOS).1 share/man/*/man1/$(UNIX2MAC).1 + cd $(prefix) ; tar cvzf $(TGZFILE) $(ZIPOBJ) + mv $(prefix)/$(TGZFILE) .. + +dist-tbz: + cd $(prefix) ; dos2unix share/doc/$(docsubdir)/*.txt share/man/man1/$(PACKAGE).1 share/man/man1/$(MAC2UNIX).1 share/man/man1/$(UNIX2DOS).1 share/man/man1/$(UNIX2MAC).1 + cd $(prefix) ; dos2unix share/man/*/man1/$(PACKAGE).1 share/man/*/man1/$(MAC2UNIX).1 share/man/*/man1/$(UNIX2DOS).1 share/man/*/man1/$(UNIX2MAC).1 + cd $(prefix) ; tar cvjf $(TBZFILE) $(ZIPOBJ) + mv $(prefix)/$(TBZFILE) .. + +dist: dist-tgz + +strip: + $(STRIP) $(BIN) + $(STRIP) $(UNIX2DOS_BIN) +ifeq ($(LINK),cp -f) + $(STRIP) $(MAC2UNIX_BIN) + $(STRIP) $(UNIX2MAC_BIN) +endif + +# End of file diff --git a/NEWS.txt b/NEWS.txt new file mode 100644 index 0000000..e34e660 --- /dev/null +++ b/NEWS.txt @@ -0,0 +1,112 @@ +2012-05-06: Version 6.0 + + * Conversion of Windows UTF-16 files to Unix UTF-8 files. + * Conversion of Unix UTF-8 files to Windows UTF-8 files with byte + order mark. + +2012-03-10: Version 5.3.3 + + * Enabled wildcard expansion for all versions. + * Fixed a compilation error when debug was enabled. + +2012-01-27: Version 5.3.2 + + * New homepage URL: http://waterlan.home.xs4all.nl/dos2unix.html + * Compiles for native MSYS. + * Compile with OpenWatcom for DOS32 and Win32. + * Detect code page on OS/2. + * Support wild cards on OS/2. + +2011-08-09: Version 5.3.1 + + * Spanish translation of messages and manual. + * File ownership is maintained in old file mode (Unix only). + * Dos2unix and Unix2dos share the same language files. + * Code cleanup. + +2011-04-26: Version 5.3 + + * Improved handling of symbolic links. New options -F, -R, -S. + * Improved handling and reporting of errors. + * Source code improvements for Cygwin. Behave exactly as on Linux. + * New option --. Treat all following options as file names. + +2011-03-04: Version 5.2.1 + + * PDF and PostScript generation is optional. No default dependency on + GhostScript and Groff. + * Enable optional Large File Support (LFS). + * Esperanto x-notation is optional. No longer installation of non-standard + locale 'eo-x'. + * Improved error messages. + +2011-01-31: Version 5.2 + + * ISO conversion mode supports same DOS code pages as SunOS dos2unix does: + CP437 (US), CP850 (Western European), CP860 (Portuguese), + CP863 (French Canadian), and CP865 (Nordic). + * ISO conversion mode supports Windows code page CP1252 (Western). + * SunOS compatible options -ascii, -iso, -7, -437, -850, -860, -863, and -865. + * Active code page detection for ISO mode. + * Fixed ISO conversion of non-breaking space (NBSP). + * ISO and 7bit mode can be used in Mac mode. + * Treat ASCII Form Feed control characters as valid text. + * Update manual pages. + * Don't include generated documentation files in Unix source package. + * Create a source package in DOS text format. + +2010-08-18: Version 5.1.1 + + * Added Dutch translation of the manual. + * Win64 port. + * Win32 binary package uses patched MinGW's libintl, with builtin + * relocation support. + * Support compilation in DOSBox (8.3 file names where needed). + * Fixed compilation on Darwin OS. + +2010-04-03: Version 5.1 + + * Esperanto translations have been added. + * Ports to 16 bit DOS have been made. + * Command-line options can be set in stdio mode. + * Bugfix dos2unix MAC mode: Don't change DOS line endings. + * Create stubs for DOS32 versions of mac2unix and unix2mac. + * Localization information has been added to the manual. + * Man pages have been merged. + * Man page generation from Perl POD file. + + +2010-02-16: Version 5.0 + + * Dos2unix and Unix2dos have been bundled in a single package. + * German translations have been added. + * Dos2unix -l --newline also works in MAC mode. + * Unix2dos also got option -l, --newline. + * Added MAC mode to Unix2dos: Convert Unix line endings to Mac line endings. + * Cleanup of messages and manual. + +2010-01-24: Version 4.1.2 + + * Preserves file modes in new file mode. + +2010-01-21: Version 4.1.1 + + * Fixes a compilation problem on FreeBSD. + +2009-12-28: Version 4.1 + + Automatically skips binary and non-regular files, + and the ISO mode has been cleaned up (see ChangeLog). + +2009-12-21: Version 4.0.1 + + Adds a port to OS/2 Warp. Two wrong conversions in ISO mode + have been fixed. The manual page has been updated. + +2009-12-15: Version 4.0 + + Adds internationalisation (Native Language Support, NLS). A Dutch + translation has been added. Ports to Windows and DOS have been made. + The problem in DOS/Windows stdio mode has been fixed. The manual has + been updated. + diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..d300e80 --- /dev/null +++ b/README.txt @@ -0,0 +1,90 @@ + +dos2unix - DOS/Mac to Unix and vice versa text file format converter. + + +FILE LIST + + README.txt : This file. + INSTALL.txt : How to build and install. + COPYING.txt : distribution license. + NEWS.txt : Basic change log for users. + ChangeLog.txt : Detailed change log for programmers. + TODO.txt : Things to do. + BUGS.txt : Known bugs and instructions on reporting new ones. + dos2unix.txt : Dos2unix manual, text format. + dos2unix.ps : Dos2unix manual, PostScript format. + dos2unix.pdf : Dos2unix manual, PDF format. + dos2unix.htm : Dos2unix manual, HTML format. + + +HISTORY + + This is an update of Benjamin Lin's implementations of dos2unix and + unix2dos. Benjamin Lin's implementations of dos2unix and unix2dos are + part of several Linux distributions such as RedHat, Fedora, Suse and + others. This update includes all RedHat patches and fixes several + other problems. Internationalization has been added and ports to DOS, + Windows, Cygwin and OS/2 Warp have been made. + + These implementations of dos2unix and unix2dos have been modelled after + dos2unix/unix2dos under SunOS/Solaris. They have similar conversion + modes, namely ascii, 7bit and iso. The first versions were made by + John Birchfield in 1989, and in 1995 rewritten from scratch by Benjamin + Lin. Mac to Unix conversion was added by Bernd Johannes Wuebben in + 1998, Unix to Mac conversion by Erwin Waterlander in 2010. + + Features + + * Native language support: Dutch, English, Esperanto, German, Spanish. + * Automatically skips binary and non-regular files + * In-place, paired, or stdio mode conversion. + * Keep original file dates option. + * 7-bit and iso conversion modes like SunOS dos2unix. + * Conversion of Windows UTF-16 files to Unix UTF-8. + + +AUTHORS + + Erwin Waterlander version 3.2-6.0 2009-2012 + Christian Wurll version 3.1 1998 + Bernd Johannes Wuebben version 3.0 1998 + Benjamin Lin version 1.1-2.3 1994-1995 + John Birchfield version 1.0 1989 + +TRANSLATORS + + Dutch Erwin Waterlander <waterlan@xs4all.nl> + Esperanto Rugxulo <rugxulo@gmail.com> + German Philipp Thomas <psmt@opensuse.org> + Spanish Julio A. Freyre-Gonzalez <jfreyreg@gmail.com> + +ACKNOWLEDGEMENTS + + Rugxulo query_con_codepage(), code page detection in DOS. + Rugxulo DJGPP stubs for mac2unix and unix2mac. + Jari Aalto Improvements man page. + Jari Aalto Improvments Makefile. + Ben Pfaff Treat form feeds as valid text. + Marc Gianzero Darwin OS port. + Elbert Pol OS/2 port. + Tim Waugh Various patches. + Mike Harris Man page update. + Bernard RosenKraenzer segfault patch. + Tim Powers mkstemp patch. + Miloslav Trmac safeconv patch. + Charles Wilson Follow symbolic links. + Charles Wilson Makefile and code cleanup for Cygwin. + Christopher Williams Maintain file ownership in old file mode. + Steven H. Levine Support wildcard expansion on OS/2. + Steve Hay Support wildcard expansion on win64. + +CONTACT INFORMATION + + Project page : http://waterlan.home.xs4all.nl/dos2unix.html + SourceForge project page : http://sourceforge.net/projects/dos2unix/ + Freecode project page : http://freecode.com/projects/dos2unix/ + + Erwin Waterlander + waterlan@xs4all.nl + http://waterlan.home.xs4all.nl/ + diff --git a/TODO.txt b/TODO.txt new file mode 100644 index 0000000..31b746a --- /dev/null +++ b/TODO.txt @@ -0,0 +1,14 @@ + +TO DO +===== + +* Translations. + + Translate into more languages. Contact Erwin Waterlander + if you want to help (waterlan@xs4all.nl). Programming skills + are not required. + +* Support Windows native symbolic links (Windows Vista and up). + +* Keep original owner in old file mode, on Windows. + @@ -0,0 +1,55 @@ +!include version.mk
+
+CC = bcc
+DEFINES = -DMSDOS -DVER_REVISION="$(DOS2UNIX_VERSION)" -DVER_DATE="$(DOS2UNIX_DATE)"
+CFLAGS = $(DEFINES) -Z -O -w -mc -1
+WILDARGS = c:/bc4/lib/16bit/wildargs.obj
+
+all: dos2unix.exe unix2dos.exe mac2unix.exe unix2mac.exe
+
+dos2unix.exe: dos2unix.obj querycp.obj common.obj
+ bcc -mc dos2unix.obj querycp.obj common.obj $(WILDARGS) noehc.lib
+
+unix2dos.exe: unix2dos.obj querycp.obj common.obj
+ bcc -mc unix2dos.obj querycp.obj common.obj $(WILDARGS) noehc.lib
+
+# remove noehc.lib if you are using Borland C version prior
+# to 4.0. noeh?.lib, where ? stands for the memory model,
+# removes the C++ exception handling from the startup-code
+# which is included by default since Borland 4.0 and
+# higher. Including noeh?.lib reduces the executable size
+# significant, provided your source is C only.
+
+
+#.c.obj:
+# $(CC) -c $(CFLAGS) $<
+
+dos2unix.obj : dos2unix.c dos2unix.h querycp.h common.h
+ $(CC) -c $(CFLAGS) -o$@ dos2unix.c
+
+unix2dos.obj : unix2dos.c unix2dos.h querycp.h common.h
+ $(CC) -c $(CFLAGS) -o$@ unix2dos.c
+
+querycp.obj : querycp.c querycp.h querycp.h
+ $(CC) -c $(CFLAGS) -o$@ querycp.c
+
+common.obj : querycp.c querycp.h common.h
+ $(CC) -c $(CFLAGS) -o$@ common.c
+
+mac2unix.exe: dos2unix.exe
+ copy /v dos2unix.exe mac2unix.exe
+
+unix2mac.exe: unix2dos.exe
+ copy /v unix2dos.exe unix2mac.exe
+
+
+strip :
+ tdstrip dos2unix.exe
+ tdstrip unix2dos.exe
+ tdstrip mac2unix.exe
+ tdstrip unix2mac.exe
+
+clean:
+ del *.obj
+ del *.exe
+
diff --git a/common.c b/common.c new file mode 100644 index 0000000..cc111fd --- /dev/null +++ b/common.c @@ -0,0 +1,645 @@ +/* + * Copyright (C) 2009-2012 Erwin Waterlander + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice in the documentation and/or other materials provided with + * the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "common.h" +#if defined(D2U_UNICODE) +#if defined(WIN32) || defined(__CYGWIN__) +#include <windows.h> +#endif +#endif + +#if defined(__GLIBC__) +/* on glibc, canonicalize_file_name() broken prior to 2.4 (06-Mar-2006) */ +# if __GNUC_PREREQ (2,4) +# define USE_CANONICALIZE_FILE_NAME 1 +# endif +#elif defined(__CYGWIN__) +/* on cygwin, canonicalize_file_name() available since api 0/213 */ +/* (1.7.0beta61, 25-Sep-09) */ +# include <cygwin/version.h> +# if (CYGWIN_VERSION_DLL_COMBINED >= 213) && (CYGWIN_VERSION_DLL_MAJOR >= 1007) +# define USE_CANONICALIZE_FILE_NAME 1 +# endif +#endif + + +/****************************************************************** + * + * int symbolic_link(char *path) + * + * test if *path points to a file that exists and is a symbolic link + * + * returns 1 on success, 0 when it fails. + * + ******************************************************************/ +int symbolic_link(char *path) +{ +#ifdef S_ISLNK + struct stat buf; + + if (STAT(path, &buf) == 0) + { + if (S_ISLNK(buf.st_mode)) + return(1); + } +#endif + return(0); +} + +/****************************************************************** + * + * int regfile(char *path, int allowSymlinks) + * + * test if *path points to a regular file (or is a symbolic link, + * if allowSymlinks != 0). + * + * returns 0 on success, -1 when it fails. + * + ******************************************************************/ +int regfile(char *path, int allowSymlinks, CFlag *ipFlag, char *progname) +{ + struct stat buf; + char *errstr; + + if (STAT(path, &buf) == 0) + { +#if DEBUG + fprintf(stderr, "%s: %s MODE 0%o ", progname, path, buf.st_mode); +#ifdef S_ISSOCK + if (S_ISSOCK(buf.st_mode)) + fprintf(stderr, " (socket)"); +#endif +#ifdef S_ISLNK + if (S_ISLNK(buf.st_mode)) + fprintf(stderr, " (symbolic link)"); +#endif + if (S_ISREG(buf.st_mode)) + fprintf(stderr, " (regular file)"); + if (S_ISBLK(buf.st_mode)) + fprintf(stderr, " (block device)"); + if (S_ISDIR(buf.st_mode)) + fprintf(stderr, " (directory)"); + if (S_ISCHR(buf.st_mode)) + fprintf(stderr, " (character device)"); + if (S_ISFIFO(buf.st_mode)) + fprintf(stderr, " (FIFO)"); + fprintf(stderr, "\n"); +#endif + if ((S_ISREG(buf.st_mode)) +#ifdef S_ISLNK + || (S_ISLNK(buf.st_mode) && allowSymlinks) +#endif + ) + return(0); + else + return(-1); + } + else + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: %s: %s\n", progname, path, errstr); + } + return(-1); + } +} + +/****************************************************************** + * + * int regfile_target(char *path) + * + * test if *path points to a regular file (follow symbolic link) + * + * returns 0 on success, -1 when it fails. + * + ******************************************************************/ +int regfile_target(char *path, CFlag *ipFlag, char *progname) +{ + struct stat buf; + char *errstr; + + if (stat(path, &buf) == 0) + { + if (S_ISREG(buf.st_mode)) + return(0); + else + return(-1); + } + else + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: %s: %s\n", progname, path, errstr); + } + return(-1); + } +} + +void PrintBSDLicense(void) +{ + fprintf(stderr, "%s", _("\ +Redistribution and use in source and binary forms, with or without\n\ +modification, are permitted provided that the following conditions\n\ +are met:\n\ +1. Redistributions of source code must retain the above copyright\n\ + notice, this list of conditions and the following disclaimer.\n\ +2. Redistributions in binary form must reproduce the above copyright\n\ + notice in the documentation and/or other materials provided with\n\ + the distribution.\n\n\ +\ +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY\n\ +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\ +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n\ +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE\n\ +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n\ +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n\ +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n\ +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n\ +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n\ +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN\n\ +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\ +")); +} + +void PrintUsage(char *progname) +{ + fprintf(stderr, _("\ +%s %s (%s)\n\ +Usage: %s [options] [file ...] [-n infile outfile ...]\n\ + -ascii convert only line breaks (default)\n\ + -iso conversion between DOS and ISO-8859-1 character set\n\ + -1252 Use Windows code page 1252 (Western European)\n\ + -437 Use DOS code page 437 (US) (default)\n\ + -850 Use DOS code page 850 (Western European)\n\ + -860 Use DOS code page 860 (Portuguese)\n\ + -863 Use DOS code page 863 (French Canadian)\n\ + -865 Use DOS code page 865 (Nordic)\n\ + -7 Convert 8 bit characters to 7 bit space\n\ + -c, --convmode conversion mode\n\ + convmode ascii, 7bit, iso, mac, default to ascii\n\ + -f, --force force conversion of binary files\n\ + -h, --help give this help\n\ + -k, --keepdate keep output file date\n\ + -L, --license display software license\n\ + -l, --newline add additional newline\n\ + -m, --add-bom add UTF-8 Byte Order Mark\n\ + -n, --newfile write to new file\n\ + infile original file in new file mode\n\ + outfile output file in new file mode\n\ + -o, --oldfile write to old file\n\ + file ... files to convert in old file mode\n\ + -q, --quiet quiet mode, suppress all warnings\n\ + always on in stdio mode\n\ + -s, --safe skip binary files (default)\n"), + progname, VER_REVISION, VER_DATE, progname); +#ifdef S_ISLNK + fprintf(stderr, _("\ + -F, --follow-symlink follow symbolic links and convert the targets\n\ + -R, --replace-symlink replace symbolic links with converted files\n\ + (original target files remain unchanged)\n\ + -S, --skip-symlink keep symbolic links and targets unchanged (default)\n")); +#endif + fprintf(stderr, _("\ + -V, --version display version number\n")); +} + + +void PrintVersion(char *progname) +{ + fprintf(stderr, "%s %s (%s)\n", progname, VER_REVISION, VER_DATE); +#if DEBUG + fprintf(stderr, "VER_AUTHOR: %s\n", VER_AUTHOR); +#endif +#if defined(__WATCOMC__) && defined(__I86__) + fprintf(stderr, "%s", _("DOS 16 bit version (WATCOMC).\n")); +#elif defined(__TURBOC__) + fprintf(stderr, "%s", _("DOS 16 bit version (TURBOC).\n")); +#elif defined(__WATCOMC__) && defined(__DOS__) + fprintf(stderr, "%s", _("DOS 32 bit version (WATCOMC).\n")); +#elif defined(DJGPP) + fprintf(stderr, "%s", _("DOS 32 bit version (DJGPP).\n")); +#elif defined(__MSYS__) + fprintf(stderr, "%s", _("MSYS version.\n")); +#elif defined(__CYGWIN__) + fprintf(stderr, "%s", _("Cygwin version.\n")); +#elif defined(__WIN64__) + fprintf(stderr, "%s", _("Windows 64 bit version (MinGW-w64).\n")); +#elif defined(__WATCOMC__) && defined(__NT__) + fprintf(stderr, "%s", _("Windows 32 bit version (WATCOMC).\n")); +#elif defined(__WIN32__) + fprintf(stderr, "%s", _("Windows 32 bit version (MinGW).\n")); +#elif defined (__OS2__) /* OS/2 Warp */ + fprintf(stderr, "%s", _("OS/2 version.\n")); +#endif +#ifdef D2U_UNICODE + fprintf(stderr, "%s", _("With Unicode UTF-16 support.\n")); +#else + fprintf(stderr, "%s", _("Without Unicode UTF-16 support.\n")); +#endif +#ifdef ENABLE_NLS + fprintf(stderr, "%s", _("With native language support.\n")); +#else + fprintf(stderr, "%s", "Without native language support.\n"); +#endif +} + +#ifdef ENABLE_NLS +void PrintLocaledir(char *localedir) +{ + fprintf(stderr, "LOCALEDIR: %s\n", localedir); +} +#endif + +/* opens file of name ipFN in read only mode + * RetVal: NULL if failure + * file stream otherwise + */ +FILE* OpenInFile(char *ipFN) +{ + return (fopen(ipFN, R_CNTRL)); +} + + +/* opens file of name ipFN in write only mode + * RetVal: NULL if failure + * file stream otherwise + */ +FILE* OpenOutFile(int fd) +{ + return (fdopen(fd, W_CNTRL)); +} + +#if defined(__TURBOC__) || defined(__MSYS__) +char *dirname(char *path) +{ + char *ptr; + + if (( path == NULL) || (((ptr=strrchr(path,'/')) == NULL) && ((ptr=strrchr(path,'\\')) == NULL)) ) + return "."; + else + { + *ptr = '\0'; + return(path); + } +} +#endif + +#ifdef NO_MKSTEMP +FILE* MakeTempFileFrom(const char *OutFN, char **fname_ret) +#else +int MakeTempFileFrom(const char *OutFN, char **fname_ret) +#endif +{ + char *cpy = strdup(OutFN); + char *dir = NULL; + size_t fname_len = 0; + char *fname_str = NULL; +#ifdef NO_MKSTEMP + char *name; + FILE *fd = NULL; +#else + int fd = -1; +#endif + + *fname_ret = NULL; + + if (!cpy) + goto make_failed; + + dir = dirname(cpy); + + fname_len = strlen(dir) + strlen("/d2utmpXXXXXX") + sizeof (char); + if (!(fname_str = malloc(fname_len))) + goto make_failed; + sprintf(fname_str, "%s%s", dir, "/d2utmpXXXXXX"); + *fname_ret = fname_str; + + free(cpy); + +#ifdef NO_MKSTEMP + name = mktemp(fname_str); + *fname_ret = name; + if ((fd = fopen(fname_str, W_CNTRL)) == NULL) + goto make_failed; +#else + if ((fd = mkstemp(fname_str)) == -1) + goto make_failed; +#endif + + return (fd); + + make_failed: + free(*fname_ret); + *fname_ret = NULL; +#ifdef NO_MKSTEMP + return (NULL); +#else + return (-1); +#endif +} + +/* Test if *lFN is the name of a symbolic link. If not, set *rFN equal + * to lFN, and return 0. If so, then use canonicalize_file_name or + * realpath to determine the pointed-to file; the resulting name is + * stored in newly allocated memory, *rFN is set to point to that value, + * and 1 is returned. On error, -1 is returned and errno is set as + * appropriate. + * + * Note that if symbolic links are not supported, then 0 is always returned + * and *rFN = lFN. + * + * RetVal: 0 if success, and *lFN is not a symlink + * 1 if success, and *lFN is a symlink + * -1 otherwise + */ +int ResolveSymbolicLink(char *lFN, char **rFN, CFlag *ipFlag, char *progname) +{ + int RetVal = 0; +#ifdef S_ISLNK + struct stat StatBuf; + char *errstr; + char *targetFN = NULL; + + if (STAT(lFN, &StatBuf)) + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: %s: %s\n", progname, lFN, errstr); + } + RetVal = -1; + } + else if (S_ISLNK(StatBuf.st_mode)) + { +#if USE_CANONICALIZE_FILE_NAME + targetFN = canonicalize_file_name(lFN); + if (!targetFN) + { + if (!ipFlag->Quiet) + { + errstr = strerror(errno); + fprintf(stderr, "%s: %s: %s\n", progname, lFN, errstr); + ipFlag->error = 1; + } + RetVal = -1; + } + else + { + *rFN = targetFN; + RetVal = 1; + } +#else + /* Sigh. Use realpath, but realize that it has a fatal + * flaw: PATH_MAX isn't necessarily the maximum path + * length -- so realpath() might fail. */ + targetFN = (char *) malloc(PATH_MAX * sizeof(char)); + if (!targetFN) + { + if (!ipFlag->Quiet) + { + errstr = strerror(errno); + fprintf(stderr, "%s: %s: %s\n", progname, lFN, errstr); + ipFlag->error = 1; + } + RetVal = -1; + } + else + { + /* is there any platform with S_ISLNK that does not have realpath? */ + char *rVal = realpath(lFN, targetFN); + if (!rVal) + { + if (!ipFlag->Quiet) + { + errstr = strerror(errno); + fprintf(stderr, "%s: %s: %s\n", progname, lFN, errstr); + ipFlag->error = 1; + } + free(targetFN); + RetVal = -1; + } + else + { + *rFN = rVal; + RetVal = 1; + } + } +#endif /* !USE_CANONICALIZE_FILE_NAME */ + } + else + *rFN = lFN; +#else /* !S_ISLNK */ + *rFN = lFN; +#endif /* !S_ISLNK */ + return RetVal; +} + +FILE *read_bom (FILE *f, int *bomtype) +{ + int bom[3]; + /* BOMs + * UTF16-LE ff fe + * UTF16-BE fe ff + * UTF-8 ef bb bf + */ + + *bomtype = FILE_MBS; + + /* Check for BOM */ + if (f != NULL) + { + if ((bom[0] = fgetc(f)) == EOF) + { + ungetc(bom[0], f); + *bomtype = FILE_MBS; + return(f); + } + if ((bom[0] != 0xff) && (bom[0] != 0xfe) && (bom[0] != 0xef)) + { + ungetc(bom[0], f); + *bomtype = FILE_MBS; + return(f); + } + if ((bom[1] = fgetc(f)) == EOF) + { + ungetc(bom[1], f); + ungetc(bom[0], f); + *bomtype = FILE_MBS; + return(f); + } + if ((bom[0] == 0xff) && (bom[1] == 0xfe)) /* UTF16-LE */ + { + *bomtype = FILE_UTF16LE; + return(f); + } + if ((bom[0] == 0xfe) && (bom[1] == 0xff)) /* UTF16-BE */ + { + *bomtype = FILE_UTF16BE; + return(f); + } + if ((bom[2] = fgetc(f)) == EOF) + { + ungetc(bom[2], f); + ungetc(bom[1], f); + ungetc(bom[0], f); + *bomtype = FILE_MBS; + return(f); + } + if ((bom[0] == 0xef) && (bom[1] == 0xbb) && (bom[2]== 0xbf)) /* UTF-8 */ + { + *bomtype = FILE_UTF8; + return(f); + } + ungetc(bom[2], f); + ungetc(bom[1], f); + ungetc(bom[0], f); + *bomtype = FILE_MBS; + return(f); + } + return(f); +} + + +#ifdef D2U_UNICODE +wint_t d2u_getwc(FILE *f, int bomtype) +{ + int c_trail, c_lead; + wint_t wc; + + if (((c_lead=fgetc(f)) == EOF) || ((c_trail=fgetc(f)) == EOF)) + return(WEOF); + + if (bomtype == FILE_UTF16LE) /* UTF16 little endian */ + { + c_trail <<=8; + wc = (wint_t)(c_trail + c_lead) ; + } else { /* UTF16 big endian */ + c_lead <<=8; + wc = (wint_t)(c_trail + c_lead) ; + } + return(wc); +} + +wint_t d2u_ungetwc(wint_t wc, FILE *f, int bomtype) +{ + int c_trail, c_lead; + + if (bomtype == FILE_UTF16LE) /* UTF16 little endian */ + { + c_trail = (int)(wc & 0xff00); + c_trail >>=8; + c_lead = (int)(wc & 0xff); + } else { /* UTF16 big endian */ + c_lead = (int)(wc & 0xff00); + c_lead >>=8; + c_trail = (int)(wc & 0xff); + } + + /* push back in reverse order */ + if ((ungetc(c_trail,f) == EOF) || (ungetc(c_lead,f) == EOF)) + return(WEOF); + return(wc); +} + +/* Put wide character */ +wint_t d2u_putwc(wint_t wc, FILE *f, CFlag *ipFlag) +{ + static char mbs[8]; + static wchar_t lead, trail; + static wchar_t wstr[3]; + size_t i,len; + + if ((wc >= 0xd800) && (wc < 0xdc00)) + { + /* fprintf(stderr, "UTF-16 lead %x\n",wc); */ + lead = (wchar_t)wc; /* lead (high) surrogate */ + return(wc); + } + if ((wc >= 0xdc00) && (wc < 0xe000)) + { + /* fprintf(stderr, "UTF-16 trail %x\n",wc); */ + trail = (wchar_t)wc; /* trail (low) surrogate */ +#if defined(WIN32) || defined(__CYGWIN__) + /* On Windows (including Cygwin) wchar_t is 16 bit */ + /* We cannot decode an UTF-16 surrogate pair, because it will + not fit in a 16 bit wchar_t. */ + wstr[0] = lead; + wstr[1] = trail; + wstr[2] = L'\0'; +#else + /* On Unix wchar_t is 32 bit */ + /* When we don't decode the UTF-16 surrogate pair, wcstombs() does not + * produce the same UTF-8 as WideCharToMultiByte(). The UTF-8 output + * produced by wcstombs() is bigger, because it just translates the wide + * characters in the range 0xD800..0xDBFF individually to UTF-8 sequences + * (although these code points are reserved for use only as surrogate + * pairs in UTF-16). Probably because on Unix the size of wide char + * (wchar_t) is 32 bit, wcstombs assumes the encoding is UTF-32, and + * ignores UTF-16 surrogates all together. Some smart viewers can still + * display this UTF-8 correctly (like Total Commander lister), however + * the UTF-8 is not readable by Windows Notepad (on Windows 7). When we + * decode the UTF-16 surrogate pairs ourselves the wcstombs() UTF-8 + * output is identical to what WideCharToMultiByte() produces, and is + * readable by Notepad. + */ + /* Decode UTF-16 surrogate pair */ + wstr[0] = 0x10000; + wstr[0] += (lead & 0x03FF) << 10; + wstr[0] += (trail & 0x03FF); + wstr[1] = L'\0'; +#endif + } else { + wstr[0] = (wchar_t)wc; + wstr[1] = L'\0'; + } + +#if defined(WIN32) || defined(__CYGWIN__) + /* On Windows we convert UTF-16 always to UTF-8 */ + len = (size_t)(WideCharToMultiByte(CP_UTF8, 0, wstr, -1, mbs, sizeof(mbs), NULL, NULL) -1); +#else + /* On Unix we convert UTF-16 to the locale encoding */ + len = wcstombs(mbs, wstr, sizeof(mbs)); +#endif + + if ( len == (size_t)(-1) ) + { /* Stop when there is a conversion error */ + ipFlag->status |= UNICODE_CONVERSION_ERROR ; + return(WEOF); + } else { + for (i=0; i<len; i++) + { + if (fputc(mbs[i], f) == EOF) + return(WEOF); + } + } + return(wc); +} +#endif diff --git a/common.h b/common.h new file mode 100644 index 0000000..45e5fca --- /dev/null +++ b/common.h @@ -0,0 +1,218 @@ +/* + * Copyright (C) 2009-2012 Erwin Waterlander + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice in the documentation and/or other materials provided with + * the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* define feature test macros for realpath() -- needed on */ +/* systems that have S_ISLNK, but chicken/egg means we must */ +/* define early, before including stdlib.h (or sys/stat.h) */ +#define _XOPEN_SOURCE 500 + +/* similarly, instead of realpath we like to use, if */ +/* available, the canonicalize_file_name() function, which */ +/* is a GNU extension. We only ACTUALLY use the function if */ +/* USE_CANONICALIZE_FILE_NAME is defined, but we don't define*/ +/* that until later. So...define the feature test macro now. */ +#define _GNU_SOURCE + +#ifdef ENABLE_NLS + +#include <libintl.h> +#define _(String) gettext (String) +#define gettext_noop(String) String +#define N_(String) gettext_noop (String) + +#else + +#define _(String) (String) +#define N_(String) String +#define textdomain(Domain) +#define bindtextdomain(Package, Directory) + +#endif + +#if defined(DJGPP) || defined(__TURBOC__) /* DJGPP */ +# include <dir.h> +#else +# ifndef __MSYS__ +# include <libgen.h> +# endif +#endif +#ifndef __TURBOC__ +#include <unistd.h> +#endif +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <utime.h> +#include <limits.h> +#ifdef __TURBOC__ +#define __FLAT__ +#endif +#include <sys/stat.h> +#ifdef ENABLE_NLS +#include <locale.h> +#endif +#include <errno.h> +#ifdef D2U_UNICODE +#include <wchar.h> +#endif + +#if (defined(__WATCOMC__) && defined(__NT__)) /* Watcom */ +# define WIN32 1 +#endif + +#if defined(__WATCOMC__) && defined(__I86__) /* Watcom C, 16 bit Intel */ +#define MSDOS 1 +#endif + +#if defined(__WATCOMC__) && defined(__DOS__) /* Watcom C, 32 bit DOS */ +#define MSDOS 1 +#endif + +#if defined(WIN32) && !defined(__CYGWIN__) /* Windows */ +#define MSDOS 1 +#endif + +#if defined(__TURBOC__) || defined(DJGPP) || defined(__MINGW32__) +/* Some compilers have no mkstemp(). + * Use mktemp() instead. + * BORLANDC, DJGPP, MINGW32 */ +#define NO_MKSTEMP 1 +#endif + +#if defined(__TURBOC__) || defined(DJGPP) || defined(__MINGW32__) || defined(__WATCOMC__) +/* Some compilers have no chown(). */ +#define NO_CHOWN 1 +#endif + +/* Watcom C defines S_ISLNK */ +#ifdef __WATCOMC__ +#undef S_ISLNK +#endif + +#if defined(MSDOS) || defined(__OS2__) +/* Systems without soft links use 'stat' instead of 'lstat'. */ +#define STAT stat +#else +#define STAT lstat +#endif + +#if defined(MSDOS) || defined(__OS2__) +/* On some systems rename() will always fail if target file already exists. */ +#define NEED_REMOVE 1 +#endif + +#if defined(MSDOS) || defined(__CYGWIN__) || defined(__OS2__) /* DJGPP, MINGW32 and OS/2 */ +/* required for setmode() and O_BINARY */ +#include <fcntl.h> +#include <io.h> +#endif + +#if defined(MSDOS) || defined(__CYGWIN__) || defined(__OS2__) + #define R_CNTRL "rb" + #define W_CNTRL "wb" +#else + #define R_CNTRL "r" + #define W_CNTRL "w" +#endif + +#define BINARY_FILE 0x1 +#define NO_REGFILE 0x2 +#define WRONG_CODEPAGE 0x4 +#define OUTPUTFILE_SYMLINK 0x8 +#define INPUT_TARGET_NO_REGFILE 0x10 +#define OUTPUT_TARGET_NO_REGFILE 0x20 +#define LOCALE_NOT_UTF8 0x40 +#define WCHAR_T_TOO_SMALL 0x80 +#define UNICODE_CONVERSION_ERROR 0x100 + +#define CONVMODE_ASCII 0 +#define CONVMODE_7BIT 1 +#define CONVMODE_437 437 +#define CONVMODE_850 850 +#define CONVMODE_860 860 +#define CONVMODE_863 863 +#define CONVMODE_865 865 +#define CONVMODE_1252 1252 + +#define FROMTO_DOS2UNIX 0 +#define FROMTO_MAC2UNIX 1 +#define FROMTO_UNIX2DOS 0 +#define FROMTO_UNIX2MAC 1 + +#define SYMLINK_SKIP 0 +#define SYMLINK_FOLLOW 1 +#define SYMLINK_REPLACE 2 + +#define FILE_MBS 0 /* Multi-byte string or 8-bit char */ +#define FILE_UTF16LE 1 /* UTF-16 Little Endian */ +#define FILE_UTF16BE 2 /* UTF-16 Big Endian */ +#define FILE_UTF8 3 /* UTF-8 */ + +typedef struct +{ + int NewFile; /* is in new file mode? */ + int Quiet; /* is in quiet mode? */ + int KeepDate; /* should keep date stamp? */ + int ConvMode; /* 0: ascii, 1: 7bit, 2: iso */ + int FromToMode; /* 0: dos2unix/unix2dos, 1: mac2unix/unix2mac */ + int NewLine; /* if TRUE, then additional newline */ + int Force; /* if TRUE, force conversion of all files. */ + int Follow; /* 0: skip symlink, 1: follow symbolic link, 2: replace symlink. */ + int status; + int stdio_mode; /* if TRUE, stdio mode */ + int error; /* an error occurred */ + int bomtype; /* byte order mark */ + int add_bom; /* 1: write BOM */ +} CFlag; + + +int symbolic_link(char *path); +int regfile(char *path, int allowSymlinks, CFlag *ipFlag, char *progname); +int regfile_target(char *path, CFlag *ipFlag, char *progname); +void PrintUsage(char *progname); +void PrintBSDLicense(void); +void PrintVersion(char *progname); +#ifdef ENABLE_NLS +void PrintLocaledir(char *localedir); +#endif +FILE* OpenInFile(char *ipFN); +FILE* OpenOutFile(int fd); +#if defined(__TURBOC__) || defined(__MSYS__) +char *dirname(char *path); +#endif +#ifdef NO_MKSTEMP +FILE* MakeTempFileFrom(const char *OutFN, char **fname_ret); +#else +int MakeTempFileFrom(const char *OutFN, char **fname_ret); +#endif +int ResolveSymbolicLink(char *lFN, char **rFN, CFlag *ipFlag, char *progname); +FILE *read_bom (FILE *f, int *bomtype); +#ifdef D2U_UNICODE +wint_t d2u_getwc(FILE *f, int bomtype); +wint_t d2u_ungetwc(wint_t wc, FILE *f, int bomtype); +wint_t d2u_putwc(wint_t wc, FILE *f, CFlag *ipFlag); +#endif + diff --git a/djgpp.mak b/djgpp.mak new file mode 100644 index 0000000..25c0954 --- /dev/null +++ b/djgpp.mak @@ -0,0 +1,36 @@ +
+# Author: Erwin Waterlander
+# Copyright (C) 2009-2012 Erwin Waterlander
+# This file is distributed under the same license as the dos2unix package.
+
+prefix=c:/djgpp
+#ENABLE_NLS=1
+ENABLE_NLS=
+VERSIONSUFFIX=-dos32
+
+ifdef ENABLE_NLS
+LDFLAGS_EXTRA = -lintl -liconv
+endif
+ZIPOBJ_EXTRA = bin/cwsdpmi.exe
+
+all:
+ $(MAKE) all EXE=.exe ENABLE_NLS=$(ENABLE_NLS) LDFLAGS_EXTRA="$(LDFLAGS_EXTRA)" prefix=$(prefix) LINK_MAN="cp -f" docsubdir=dos2unix EO_XNOTATION=1 UCS=
+
+install:
+ $(MAKE) install EXE=.exe ENABLE_NLS=$(ENABLE_NLS) LDFLAGS_EXTRA="$(LDFLAGS_EXTRA)" prefix=$(prefix) LINK_MAN="cp -f" docsubdir=dos2unix EO_XNOTATION=1 UCS=
+
+uninstall:
+ $(MAKE) uninstall EXE=.exe prefix=$(prefix) docsubdir=dos2unix
+
+clean:
+ $(MAKE) clean EXE=.exe ENABLE_NLS=$(ENABLE_NLS) prefix=$(prefix)
+
+mostlyclean:
+ $(MAKE) mostlyclean EXE=.exe ENABLE_NLS=$(ENABLE_NLS) prefix=$(prefix)
+
+dist:
+ $(MAKE) dist-zip EXE=.exe prefix=$(prefix) VERSIONSUFFIX="$(VERSIONSUFFIX)" ZIPOBJ_EXTRA="${ZIPOBJ_EXTRA}" ENABLE_NLS=$(ENABLE_NLS) docsubdir=dos2unix
+
+strip:
+ $(MAKE) strip LINK_MAN="cp -f" EXE=.exe
+
diff --git a/dos16_gnu.mak b/dos16_gnu.mak new file mode 100644 index 0000000..4c53b29 --- /dev/null +++ b/dos16_gnu.mak @@ -0,0 +1,32 @@ +
+# Author: Erwin Waterlander
+# Copyright (C) 2009-2011 Erwin Waterlander
+# This file is distributed under the same license as the dos2unix package.
+
+include version.mk
+
+prefix=c:/dos16
+ENABLE_NLS=
+
+ifdef ENABLE_NLS
+LDFLAGS_EXTRA = -lintl -liconv
+endif
+
+all:
+ wmake -f wccdos16.mak
+
+install:
+ $(MAKE) install EXE=.exe ENABLE_NLS=$(ENABLE_NLS) LDFLAGS_EXTRA="$(LDFLAGS_EXTRA)" prefix=$(prefix) LINK="cp -f" docsubdir=dos2unix
+
+uninstall:
+ $(MAKE) uninstall EXE=.exe prefix=$(prefix) docsubdir=dos2unix
+
+clean:
+ $(MAKE) clean EXE=.exe ENABLE_NLS=$(ENABLE_NLS) prefix=$(prefix)
+
+dist:
+ $(MAKE) dist-zip EXE=.exe prefix=$(prefix) ZIPOBJ_EXTRA="${ZIPOBJ_EXTRA}" ENABLE_NLS=$(ENABLE_NLS) docsubdir=dos2unix ZIPFILE=d2u$(DOS2UNIX_VERSION_SHORT)b.zip
+
+strip:
+ wmake -f wccdos16.mak strip
+
diff --git a/dos2unix.c b/dos2unix.c new file mode 100644 index 0000000..88d3354 --- /dev/null +++ b/dos2unix.c @@ -0,0 +1,1181 @@ +/* + * Name: dos2unix + * Documentation: + * Remove cr ('\x0d') characters from a file. + * + * The dos2unix package is distributed under FreeBSD style license. + * See also http://www.freebsd.org/copyright/freebsd-license.html + * -------- + * + * Copyright (C) 2009-2012 Erwin Waterlander + * Copyright (C) 1998 Christian Wurll + * Copyright (C) 1998 Bernd Johannes Wuebben + * Copyright (C) 1994-1995 Benjamin Lin. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice in the documentation and/or other materials provided with + * the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * == 1.0 == 1989.10.04 == John Birchfield (jb@koko.csustan.edu) + * == 1.1 == 1994.12.20 == Benjamin Lin (blin@socs.uts.edu.au) + * Cleaned up for Borland C/C++ 4.02 + * == 1.2 == 1995.03.16 == Benjamin Lin (blin@socs.uts.edu.au) + * Modified to more conform to UNIX style. + * == 2.0 == 1995.03.19 == Benjamin Lin (blin@socs.uts.edu.au) + * Rewritten from scratch. + * == 2.1 == 1995.03.29 == Benjamin Lin (blin@socs.uts.edu.au) + * Conversion to SunOS charset implemented. + * == 2.2 == 1995.03.30 == Benjamin Lin (blin@socs.uts.edu.au) + * Fixed a bug in 2.1 where in new file mode, if outfile already exists + * conversion can not be completed properly. + * + * Added Mac text file translation, i.e. \r to \n conversion + * Bernd Johannes Wuebben, wuebben@kde.org + * Wed Feb 4 19:12:58 EST 1998 + * + * Added extra newline if ^M occurs + * Christian Wurll, wurll@ira.uka.de + * Thu Nov 19 1998 + * + * See ChangeLog.txt for complete version history. + * + */ + + +/* #define DEBUG 1 */ + +#include "common.h" +#include "dos2unix.h" +#include "querycp.h" +#ifdef D2U_UNICODE +#ifndef MSDOS /* Unix, Cygwin */ +# include <langinfo.h> +#endif +#endif + +void PrintLicense(void) +{ + fprintf(stderr, "%s", _("\ +Copyright (C) 2009-2012 Erwin Waterlander\n\ +Copyright (C) 1998 Christian Wurll (Version 3.1)\n\ +Copyright (C) 1998 Bernd Johannes Wuebben (Version 3.0)\n\ +Copyright (C) 1994-1995 Benjamin Lin\n\ +All rights reserved.\n\n")); + PrintBSDLicense(); +} + +#ifdef D2U_UNICODE +void StripDelimiterW(FILE* ipInF, FILE* ipOutF, CFlag *ipFlag, wint_t CurChar) +{ + wint_t TempNextChar; + /* CurChar is always CR (x0d) */ + /* In normal dos2unix mode put nothing (skip CR). */ + /* Don't modify Mac files when in dos2unix mode. */ + if ( (TempNextChar = d2u_getwc(ipInF, ipFlag->bomtype)) != WEOF) { + d2u_ungetwc( TempNextChar, ipInF, ipFlag->bomtype); /* put back peek char */ + if ( TempNextChar != 0x0a ) { + d2u_putwc( CurChar, ipOutF, ipFlag); /* Mac line, put back CR */ + } + } + else if ( CurChar == 0x0d ) { /* EOF: last Mac line delimiter (CR)? */ + d2u_putwc( CurChar, ipOutF, ipFlag); + } + if (ipFlag->NewLine) { /* add additional LF? */ + d2u_putwc(0x0a, ipOutF, ipFlag); + } +} +#endif + +void StripDelimiter(FILE* ipInF, FILE* ipOutF, CFlag *ipFlag, int CurChar) +{ + int TempNextChar; + /* CurChar is always CR (x0d) */ + /* In normal dos2unix mode put nothing (skip CR). */ + /* Don't modify Mac files when in dos2unix mode. */ + if ( (TempNextChar = fgetc(ipInF)) != EOF) { + ungetc( TempNextChar, ipInF ); /* put back peek char */ + if ( TempNextChar != '\x0a' ) { + fputc( CurChar, ipOutF ); /* Mac line, put back CR */ + } + } + else if ( CurChar == '\x0d' ) { /* EOF: last Mac line delimiter (CR)? */ + fputc( CurChar, ipOutF ); + } + if (ipFlag->NewLine) { /* add additional LF? */ + fputc('\x0a', ipOutF); + } +} + +/* converts stream ipInF to UNIX format text and write to stream ipOutF + * RetVal: 0 if success + * -1 otherwise + */ +#ifdef D2U_UNICODE +int ConvertDosToUnixW(FILE* ipInF, FILE* ipOutF, CFlag *ipFlag, char *progname) +{ + int RetVal = 0; + wint_t TempChar; + wint_t TempNextChar; + + ipFlag->status = 0; + + /* CR-LF -> LF */ + /* LF -> LF, in case the input file is a Unix text file */ + /* CR -> CR, in dos2unix mode (don't modify Mac file) */ + /* CR -> LF, in Mac mode */ + /* \x0a = Newline/Line Feed (LF) */ + /* \x0d = Carriage Return (CR) */ + + switch (ipFlag->FromToMode) + { + case FROMTO_DOS2UNIX: /* dos2unix */ + while ((TempChar = d2u_getwc(ipInF, ipFlag->bomtype)) != WEOF) { /* get character */ + if ((ipFlag->Force == 0) && + (TempChar < 32) && + (TempChar != 0x0a) && /* Not an LF */ + (TempChar != 0x0d) && /* Not a CR */ + (TempChar != 0x09) && /* Not a TAB */ + (TempChar != 0x0c)) { /* Not a form feed */ + RetVal = -1; + ipFlag->status |= BINARY_FILE ; + break; + } + if (TempChar != 0x0d) { + if (d2u_putwc(TempChar, ipOutF, ipFlag) == WEOF) { + RetVal = -1; + if (!ipFlag->Quiet) + { + if (!(ipFlag->status & UNICODE_CONVERSION_ERROR)) + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, "%s", _("can not write to output file\n")); + } + } + break; + } + } else { + StripDelimiterW( ipInF, ipOutF, ipFlag, TempChar ); + } + } + break; + case FROMTO_MAC2UNIX: /* mac2unix */ + while ((TempChar = d2u_getwc(ipInF, ipFlag->bomtype)) != WEOF) { + if ((ipFlag->Force == 0) && + (TempChar < 32) && + (TempChar != 0x0a) && /* Not an LF */ + (TempChar != 0x0d) && /* Not a CR */ + (TempChar != 0x09) && /* Not a TAB */ + (TempChar != 0x0c)) { /* Not a form feed */ + RetVal = -1; + ipFlag->status |= BINARY_FILE ; + break; + } + if ((TempChar != 0x0d)) + { + if(d2u_putwc(TempChar, ipOutF, ipFlag) == WEOF){ + RetVal = -1; + if (!ipFlag->Quiet) + { + if (!(ipFlag->status & UNICODE_CONVERSION_ERROR)) + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, "%s", _("can not write to output file\n")); + } + } + break; + } + } + else{ + /* TempChar is a CR */ + if ( (TempNextChar = d2u_getwc(ipInF, ipFlag->bomtype)) != WEOF) { + ungetc( TempNextChar, ipInF ); /* put back peek char */ + /* Don't touch this delimiter if it's a CR,LF pair. */ + if ( TempNextChar == 0x0a ) { + d2u_putwc(0x0d, ipOutF, ipFlag); /* put CR, part of DOS CR-LF */ + continue; + } + } + if (d2u_putwc(0x0a, ipOutF, ipFlag) == WEOF) /* MAC line end (CR). Put LF */ + { + RetVal = -1; + if (!ipFlag->Quiet) + { + if (!(ipFlag->status & UNICODE_CONVERSION_ERROR)) + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, "%s", _("can not write to output file\n")); + } + } + break; + } + if (ipFlag->NewLine) { /* add additional LF? */ + d2u_putwc(0x0a, ipOutF, ipFlag); + } + } + } + break; + default: /* unknown FromToMode */ + ; +#if DEBUG + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("program error, invalid conversion mode %d\n"),ipFlag->FromToMode); + exit(1); +#endif + } + return RetVal; +} +#endif + +/* converts stream ipInF to UNIX format text and write to stream ipOutF + * RetVal: 0 if success + * -1 otherwise + */ +int ConvertDosToUnix(FILE* ipInF, FILE* ipOutF, CFlag *ipFlag, char *progname) +{ + int RetVal = 0; + int TempChar; + int TempNextChar; + int *ConvTable; + + ipFlag->status = 0; + + switch (ipFlag->ConvMode) + { + case CONVMODE_ASCII: /* ascii */ + ConvTable = D2UAsciiTable; + break; + case CONVMODE_7BIT: /* 7bit */ + ConvTable = D2U7BitTable; + break; + case CONVMODE_437: /* iso */ + ConvTable = D2UIso437Table; + break; + case CONVMODE_850: /* iso */ + ConvTable = D2UIso850Table; + break; + case CONVMODE_860: /* iso */ + ConvTable = D2UIso860Table; + break; + case CONVMODE_863: /* iso */ + ConvTable = D2UIso863Table; + break; + case CONVMODE_865: /* iso */ + ConvTable = D2UIso865Table; + break; + case CONVMODE_1252: /* iso */ + ConvTable = D2UIso1252Table; + break; + default: /* unknown convmode */ + ipFlag->status |= WRONG_CODEPAGE ; + return(-1); + } + if ((ipFlag->ConvMode > 1) && (!ipFlag->Quiet)) /* not ascii or 7bit */ + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("using code page %d.\n"), ipFlag->ConvMode); + } + + /* CR-LF -> LF */ + /* LF -> LF, in case the input file is a Unix text file */ + /* CR -> CR, in dos2unix mode (don't modify Mac file) */ + /* CR -> LF, in Mac mode */ + /* \x0a = Newline/Line Feed (LF) */ + /* \x0d = Carriage Return (CR) */ + + switch (ipFlag->FromToMode) + { + case FROMTO_DOS2UNIX: /* dos2unix */ + while ((TempChar = fgetc(ipInF)) != EOF) { /* get character */ + if ((ipFlag->Force == 0) && + (TempChar < 32) && + (TempChar != '\x0a') && /* Not an LF */ + (TempChar != '\x0d') && /* Not a CR */ + (TempChar != '\x09') && /* Not a TAB */ + (TempChar != '\x0c')) { /* Not a form feed */ + RetVal = -1; + ipFlag->status |= BINARY_FILE ; + break; + } + if (TempChar != '\x0d') { + if (fputc(ConvTable[TempChar], ipOutF) == EOF) { + RetVal = -1; + if (!ipFlag->Quiet) + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, "%s", _("can not write to output file\n")); + } + break; + } + } else { + StripDelimiter( ipInF, ipOutF, ipFlag, TempChar ); + } + } + break; + case FROMTO_MAC2UNIX: /* mac2unix */ + while ((TempChar = fgetc(ipInF)) != EOF) { + if ((ipFlag->Force == 0) && + (TempChar < 32) && + (TempChar != '\x0a') && /* Not an LF */ + (TempChar != '\x0d') && /* Not a CR */ + (TempChar != '\x09') && /* Not a TAB */ + (TempChar != '\x0c')) { /* Not a form feed */ + RetVal = -1; + ipFlag->status |= BINARY_FILE ; + break; + } + if ((TempChar != '\x0d')) + { + if(fputc(ConvTable[TempChar], ipOutF) == EOF){ + RetVal = -1; + if (!ipFlag->Quiet) + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, "%s", _("can not write to output file\n")); + } + break; + } + } + else{ + /* TempChar is a CR */ + if ( (TempNextChar = fgetc(ipInF)) != EOF) { + ungetc( TempNextChar, ipInF ); /* put back peek char */ + /* Don't touch this delimiter if it's a CR,LF pair. */ + if ( TempNextChar == '\x0a' ) { + fputc('\x0d', ipOutF); /* put CR, part of DOS CR-LF */ + continue; + } + } + if (fputc('\x0a', ipOutF) == EOF) /* MAC line end (CR). Put LF */ + { + RetVal = -1; + if (!ipFlag->Quiet) + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, "%s", _("can not write to output file\n")); + } + break; + } + if (ipFlag->NewLine) { /* add additional LF? */ + fputc('\x0a', ipOutF); + } + } + } + break; + default: /* unknown FromToMode */ + ; +#if DEBUG + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("program error, invalid conversion mode %d\n"),ipFlag->FromToMode); + exit(1); +#endif + } + return RetVal; +} + +/* convert file ipInFN to UNIX format text and write to file ipOutFN + * RetVal: 0 if success + * -1 otherwise + */ +int ConvertDosToUnixNewFile(char *ipInFN, char *ipOutFN, CFlag *ipFlag, char *progname) +{ + int RetVal = 0; + FILE *InF = NULL; + FILE *TempF = NULL; + char *TempPath; + char *errstr; + struct stat StatBuf; + struct utimbuf UTimeBuf; +#ifndef NO_CHMOD + mode_t mask; +#endif +#ifdef NO_MKSTEMP + FILE* fd; +#else + int fd; +#endif + char *TargetFN = NULL; + int ResolveSymlinkResult = 0; + + ipFlag->status = 0 ; + + /* Test if output file is a symbolic link */ + if (symbolic_link(ipOutFN) && !ipFlag->Follow) + { + ipFlag->status |= OUTPUTFILE_SYMLINK ; + /* Not a failure, skipping input file according spec. (keep symbolic link unchanged) */ + return -1; + } + + /* Test if input file is a regular file or symbolic link */ + if (regfile(ipInFN, 1, ipFlag, progname)) + { + ipFlag->status |= NO_REGFILE ; + /* Not a failure, skipping non-regular input file according spec. */ + return -1; + } + + /* Test if input file target is a regular file */ + if (symbolic_link(ipInFN) && regfile_target(ipInFN, ipFlag,progname)) + { + ipFlag->status |= INPUT_TARGET_NO_REGFILE ; + /* Not a failure, skipping non-regular input file according spec. */ + return -1; + } + + /* Test if output file target is a regular file */ + if (symbolic_link(ipOutFN) && (ipFlag->Follow == SYMLINK_FOLLOW) && regfile_target(ipOutFN, ipFlag,progname)) + { + ipFlag->status |= OUTPUT_TARGET_NO_REGFILE ; + /* Failure, input is regular, cannot produce output. */ + if (!ipFlag->error) ipFlag->error = 1; + return -1; + } + + /* retrieve ipInFN file date stamp */ + if (stat(ipInFN, &StatBuf)) + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: %s: %s\n", progname, ipInFN, errstr); + } + RetVal = -1; + } + +#ifdef NO_MKSTEMP + if((fd = MakeTempFileFrom(ipOutFN, &TempPath))==NULL) { +#else + if((fd = MakeTempFileFrom (ipOutFN, &TempPath)) < 0) { +#endif + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("Failed to open temporary output file: %s\n"), errstr); + } + RetVal = -1; + } + +#if DEBUG + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("using %s as temporary file\n"), TempPath); +#endif + + /* can open in file? */ + if (!RetVal) + { + InF=OpenInFile(ipInFN); + if (InF == NULL) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: %s: %s\n", progname, ipInFN, errstr); + RetVal = -1; + } + } + + /* can open output file? */ + if ((!RetVal) && (InF)) + { +#ifdef NO_MKSTEMP + if ((TempF=fd) == NULL) + { +#else + if ((TempF=OpenOutFile(fd)) == NULL) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: %s\n", progname, errstr); +#endif + fclose (InF); + InF = NULL; + RetVal = -1; + } + } + + InF = read_bom(InF, &ipFlag->bomtype); + +#ifdef D2U_UNICODE +#ifndef MSDOS /* Unix, Cygwin */ + if ((ipFlag->bomtype == FILE_UTF16LE) || (ipFlag->bomtype == FILE_UTF16BE)) + { + if (strcmp(nl_langinfo(CODESET), "UTF-8") != 0) + { + /* Don't convert UTF-16 files when the locale encoding is not UTF-8 + * to prevent loss of characters. */ + ipFlag->status |= LOCALE_NOT_UTF8 ; + if (!ipFlag->error) ipFlag->error = 1; + RetVal = -1; + } + } +#endif +#if !defined(WIN32) && !defined(__CYGWIN__) /* Not Windows or Cygwin */ + if ((ipFlag->bomtype == FILE_UTF16LE) || (ipFlag->bomtype == FILE_UTF16BE)) + { + if (sizeof(wchar_t) < 4) + { + /* A decoded UTF-16 surrogate pair must fit in a wchar_t */ + ipFlag->status |= WCHAR_T_TOO_SMALL ; + if (!ipFlag->error) ipFlag->error = 1; + RetVal = -1; + } + } +#endif +#endif + + if (ipFlag->add_bom) + fprintf(TempF, "%s", "\xEF\xBB\xBF"); /* UTF-8 BOM */ + + /* Turn off ISO and 7-bit conversion for Unicode text files */ + if (ipFlag->bomtype > 0) + ipFlag->ConvMode = CONVMODE_ASCII; + + /* conversion sucessful? */ +#ifdef D2U_UNICODE + if ((ipFlag->bomtype == FILE_UTF16LE) || (ipFlag->bomtype == FILE_UTF16BE)) + { + if ((!RetVal) && (ConvertDosToUnixW(InF, TempF, ipFlag, progname))) + RetVal = -1; + if (ipFlag->status & UNICODE_CONVERSION_ERROR) + { + if (!ipFlag->error) ipFlag->error = 1; + RetVal = -1; + } + } else { + if ((!RetVal) && (ConvertDosToUnix(InF, TempF, ipFlag, progname))) + RetVal = -1; + } +#else + if ((!RetVal) && (ConvertDosToUnix(InF, TempF, ipFlag, progname))) + RetVal = -1; +#endif + + /* can close in file? */ + if ((InF) && (fclose(InF) == EOF)) + RetVal = -1; + + /* can close output file? */ + if ((TempF) && (fclose(TempF) == EOF)) + RetVal = -1; + +#ifdef NO_MKSTEMP + if(fd!=NULL) + fclose(fd); +#else + if(fd>=0) + close(fd); +#endif + +#ifndef NO_CHMOD + if (!RetVal) + { + if (ipFlag->NewFile == 0) /* old file mode */ + { + RetVal = chmod (TempPath, StatBuf.st_mode); /* set original permissions */ + } + else + { + mask = umask(0); /* get process's umask */ + umask(mask); /* set umask back to original */ + RetVal = chmod(TempPath, StatBuf.st_mode & ~mask); /* set original permissions, minus umask */ + } + + if (RetVal) + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("Failed to change the permissions of temporary output file %s: %s\n"), TempPath, errstr); + } + } + } +#endif + +#ifndef NO_CHOWN + if (!RetVal && (ipFlag->NewFile == 0)) /* old file mode */ + { + /* Change owner and group of the the tempory output file to the original file's uid and gid. */ + /* Required when a different user (e.g. root) has write permission on the original file. */ + /* Make sure that the original owner can still access the file. */ + if (chown(TempPath, StatBuf.st_uid, StatBuf.st_gid)) + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("Failed to change the owner and group of temporary output file %s: %s\n"), TempPath, errstr); + } + RetVal = -1; + } + } +#endif + + if ((!RetVal) && (ipFlag->KeepDate)) + { + UTimeBuf.actime = StatBuf.st_atime; + UTimeBuf.modtime = StatBuf.st_mtime; + /* can change output file time to in file time? */ + if (utime(TempPath, &UTimeBuf) == -1) + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: %s: %s\n", progname, TempPath, errstr); + } + RetVal = -1; + } + } + + /* any error? cleanup the temp file */ + if (RetVal && (TempPath != NULL)) + { + if (unlink(TempPath) && (errno != ENOENT)) + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: %s: %s\n", progname, TempPath, errstr); + } + RetVal = -1; + } + } + + /* If output file is a symbolic link, optional resolve the link and modify */ + /* the target, instead of removing the link and creating a new regular file */ + TargetFN = ipOutFN; + if (symbolic_link(ipOutFN) && !RetVal) + { + ResolveSymlinkResult = 0; /* indicates that TargetFN need not be freed */ + if (ipFlag->Follow == SYMLINK_FOLLOW) + { + ResolveSymlinkResult = ResolveSymbolicLink(ipOutFN, &TargetFN, ipFlag, progname); + if (ResolveSymlinkResult < 0) + { + if (!ipFlag->Quiet) + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("problems resolving symbolic link '%s'\n"), ipOutFN); + fprintf(stderr, _(" output file remains in '%s'\n"), TempPath); + } + RetVal = -1; + } + } + } + + /* can rename temporary file to output file? */ + if (!RetVal) + { +#ifdef NEED_REMOVE + if (unlink(TargetFN) && (errno != ENOENT)) + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: %s: %s\n", progname, TargetFN, errstr); + } + RetVal = -1; + } +#endif + if (rename(TempPath, TargetFN) == -1) + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("problems renaming '%s' to '%s': %s\n"), TempPath, TargetFN, errstr); +#ifdef S_ISLNK + if (ResolveSymlinkResult > 0) + fprintf(stderr, _(" which is the target of symbolic link '%s'\n"), ipOutFN); +#endif + fprintf(stderr, _(" output file remains in '%s'\n"), TempPath); + } + RetVal = -1; + } + + if (ResolveSymlinkResult > 0) + free(TargetFN); + } + free(TempPath); + return RetVal; +} + +/* convert stdin to UNIX format text and write to stdout + * RetVal: 0 if success + * -1 otherwise + */ +int ConvertDosToUnixStdio(CFlag *ipFlag, char *progname) +{ + ipFlag->NewFile = 1; + ipFlag->Quiet = 1; + ipFlag->KeepDate = 0; + ipFlag->Force = 1; + +#if defined(WIN32) && !defined(__CYGWIN__) + + /* stdin and stdout are by default text streams. We need + * to set them to binary mode. Otherwise an LF will + * automatically be converted to CR-LF on DOS/Windows. + * Erwin */ + + /* 'setmode' was deprecated by MicroSoft + * since Visual C++ 2005. Use '_setmode' instead. */ + + _setmode(fileno(stdout), O_BINARY); + _setmode(fileno(stdin), O_BINARY); +#elif defined(MSDOS) || defined(__CYGWIN__) || defined(__OS2__) + setmode(fileno(stdout), O_BINARY); + setmode(fileno(stdin), O_BINARY); +#endif + + read_bom(stdin, &ipFlag->bomtype); + + if (ipFlag->add_bom) + fprintf(stdout, "%s", "\xEF\xBB\xBF"); /* UTF-8 BOM */ + +#ifdef D2U_UNICODE + if ((ipFlag->bomtype == FILE_UTF16LE) || (ipFlag->bomtype == FILE_UTF16BE)) + { + return (ConvertDosToUnixW(stdin, stdout, ipFlag, progname)); + } else { + return (ConvertDosToUnix(stdin, stdout, ipFlag, progname)); + } +#else + return (ConvertDosToUnix(stdin, stdout, ipFlag, progname)); +#endif +} + + +int main (int argc, char *argv[]) +{ + /* variable declarations */ + char progname[9]; + int ArgIdx; + int CanSwitchFileMode; + int ShouldExit; + int RetVal = 0; + int process_options = 1; + CFlag *pFlag; + char *ptr; +#ifdef ENABLE_NLS + char localedir[1024]; +#endif +# ifdef __MINGW64__ + int _dowildcard = -1; /* enable wildcard expansion for Win64 */ +# endif + + progname[8] = '\0'; + strcpy(progname,"dos2unix"); + +#ifdef ENABLE_NLS + ptr = getenv("DOS2UNIX_LOCALEDIR"); + if (ptr == NULL) + strcpy(localedir,LOCALEDIR); + else + { + if (strlen(ptr) < sizeof(localedir)) + strcpy(localedir,ptr); + else + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, "%s", _("error: Value of environment variable DOS2UNIX_LOCALEDIR is too long.\n")); + strcpy(localedir,LOCALEDIR); + } + } + + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, localedir); + textdomain (PACKAGE); +#endif + + + /* variable initialisations */ + ArgIdx = 0; + CanSwitchFileMode = 1; + ShouldExit = 0; + pFlag = (CFlag*)malloc(sizeof(CFlag)); + pFlag->NewFile = 0; + pFlag->Quiet = 0; + pFlag->KeepDate = 0; + pFlag->ConvMode = CONVMODE_ASCII; /* default ascii */ + pFlag->FromToMode = FROMTO_DOS2UNIX; /* default dos2unix */ + pFlag->NewLine = 0; + pFlag->Force = 0; + pFlag->Follow = SYMLINK_SKIP; + pFlag->status = 0; + pFlag->stdio_mode = 1; + pFlag->error = 0; +#ifdef D2U_UNICODE + pFlag->bomtype = FILE_MBS; +#endif + pFlag->add_bom = 0; + + if ( ((ptr=strrchr(argv[0],'/')) == NULL) && ((ptr=strrchr(argv[0],'\\')) == NULL) ) + ptr = argv[0]; + else + ptr++; + + if ((strcmpi("mac2unix", ptr) == 0) || (strcmpi("mac2unix.exe", ptr) == 0)) + { + pFlag->FromToMode = FROMTO_MAC2UNIX; + strcpy(progname,"mac2unix"); + } + + while ((++ArgIdx < argc) && (!ShouldExit)) + { + /* is it an option? */ + if ((argv[ArgIdx][0] == '-') && process_options) + { + /* an option */ + if (strcmp(argv[ArgIdx],"--") == 0) + process_options = 0; + else if ((strcmp(argv[ArgIdx],"-h") == 0) || (strcmp(argv[ArgIdx],"--help") == 0)) + { + PrintUsage(progname); + return(pFlag->error); + } + else if ((strcmp(argv[ArgIdx],"-k") == 0) || (strcmp(argv[ArgIdx],"--keepdate") == 0)) + pFlag->KeepDate = 1; + else if ((strcmp(argv[ArgIdx],"-f") == 0) || (strcmp(argv[ArgIdx],"--force") == 0)) + pFlag->Force = 1; + else if ((strcmp(argv[ArgIdx],"-s") == 0) || (strcmp(argv[ArgIdx],"--safe") == 0)) + pFlag->Force = 0; + else if ((strcmp(argv[ArgIdx],"-q") == 0) || (strcmp(argv[ArgIdx],"--quiet") == 0)) + pFlag->Quiet = 1; + else if ((strcmp(argv[ArgIdx],"-l") == 0) || (strcmp(argv[ArgIdx],"--newline") == 0)) + pFlag->NewLine = 1; + else if ((strcmp(argv[ArgIdx],"-m") == 0) || (strcmp(argv[ArgIdx],"--add-bom") == 0)) + pFlag->add_bom = 1; + else if ((strcmp(argv[ArgIdx],"-S") == 0) || (strcmp(argv[ArgIdx],"--skip-symlink") == 0)) + pFlag->Follow = SYMLINK_SKIP; + else if ((strcmp(argv[ArgIdx],"-F") == 0) || (strcmp(argv[ArgIdx],"--follow-symlink") == 0)) + pFlag->Follow = SYMLINK_FOLLOW; + else if ((strcmp(argv[ArgIdx],"-R") == 0) || (strcmp(argv[ArgIdx],"--replace-symlink") == 0)) + pFlag->Follow = SYMLINK_REPLACE; + else if ((strcmp(argv[ArgIdx],"-V") == 0) || (strcmp(argv[ArgIdx],"--version") == 0)) + { + PrintVersion(progname); +#ifdef ENABLE_NLS + PrintLocaledir(localedir); +#endif + return(pFlag->error); + } + else if ((strcmp(argv[ArgIdx],"-L") == 0) || (strcmp(argv[ArgIdx],"--license") == 0)) + { + PrintLicense(); + return(pFlag->error); + } + else if (strcmp(argv[ArgIdx],"-ascii") == 0) /* SunOS compatible options */ + pFlag->ConvMode = CONVMODE_ASCII; + else if (strcmp(argv[ArgIdx],"-7") == 0) + pFlag->ConvMode = CONVMODE_7BIT; + else if (strcmp(argv[ArgIdx],"-iso") == 0) + { + pFlag->ConvMode = (int)query_con_codepage(); + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr,_("active code page: %d\n"), pFlag->ConvMode); + } + if (pFlag->ConvMode < 2) + pFlag->ConvMode = CONVMODE_437; + } + else if (strcmp(argv[ArgIdx],"-437") == 0) + pFlag->ConvMode = CONVMODE_437; + else if (strcmp(argv[ArgIdx],"-850") == 0) + pFlag->ConvMode = CONVMODE_850; + else if (strcmp(argv[ArgIdx],"-860") == 0) + pFlag->ConvMode = CONVMODE_860; + else if (strcmp(argv[ArgIdx],"-863") == 0) + pFlag->ConvMode = CONVMODE_863; + else if (strcmp(argv[ArgIdx],"-865") == 0) + pFlag->ConvMode = CONVMODE_865; + else if (strcmp(argv[ArgIdx],"-1252") == 0) + pFlag->ConvMode = CONVMODE_1252; + else if ((strcmp(argv[ArgIdx],"-c") == 0) || (strcmp(argv[ArgIdx],"--convmode") == 0)) + { + if (++ArgIdx < argc) + { + if (strcmpi(argv[ArgIdx],"ascii") == 0) /* Benjamin Lin's legacy options */ + pFlag->ConvMode = CONVMODE_ASCII; + else if (strcmpi(argv[ArgIdx], "7bit") == 0) + pFlag->ConvMode = CONVMODE_7BIT; + else if (strcmpi(argv[ArgIdx], "iso") == 0) + { + pFlag->ConvMode = (int)query_con_codepage(); + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr,_("active code page: %d\n"), pFlag->ConvMode); + } + if (pFlag->ConvMode < 2) + pFlag->ConvMode = CONVMODE_437; + } + else if (strcmpi(argv[ArgIdx], "mac") == 0) + pFlag->FromToMode = FROMTO_MAC2UNIX; + else + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("invalid %s conversion mode specified\n"),argv[ArgIdx]); + pFlag->error = 1; + ShouldExit = 1; + pFlag->stdio_mode = 0; + } + } + else + { + ArgIdx--; + fprintf(stderr,"%s: ",progname); + fprintf(stderr,_("option '%s' requires an argument\n"),argv[ArgIdx]); + pFlag->error = 1; + ShouldExit = 1; + pFlag->stdio_mode = 0; + } + } + + else if ((strcmp(argv[ArgIdx],"-o") == 0) || (strcmp(argv[ArgIdx],"--oldfile") == 0)) + { + /* last convert not paired */ + if (!CanSwitchFileMode) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("target of file %s not specified in new file mode\n"), argv[ArgIdx-1]); + pFlag->error = 1; + ShouldExit = 1; + pFlag->stdio_mode = 0; + } + pFlag->NewFile = 0; + } + + else if ((strcmp(argv[ArgIdx],"-n") == 0) || (strcmp(argv[ArgIdx],"--newfile") == 0)) + { + /* last convert not paired */ + if (!CanSwitchFileMode) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("target of file %s not specified in new file mode\n"), argv[ArgIdx-1]); + pFlag->error = 1; + ShouldExit = 1; + pFlag->stdio_mode = 0; + } + pFlag->NewFile = 1; + } + else { /* wrong option */ + PrintUsage(progname); + ShouldExit = 1; + pFlag->error = 1; + pFlag->stdio_mode = 0; + } + } + else + { + pFlag->stdio_mode = 0; + /* not an option */ + if (pFlag->NewFile) + { + if (CanSwitchFileMode) + CanSwitchFileMode = 0; + else + { + RetVal = ConvertDosToUnixNewFile(argv[ArgIdx-1], argv[ArgIdx], pFlag, progname); + if (pFlag->status & NO_REGFILE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping %s, not a regular file.\n"), argv[ArgIdx-1]); + } + } else if (pFlag->status & OUTPUTFILE_SYMLINK) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping %s, output file %s is a symbolic link.\n"), argv[ArgIdx-1], argv[ArgIdx]); + } + } else if (pFlag->status & INPUT_TARGET_NO_REGFILE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping symbolic link %s, target is not a regular file.\n"), argv[ArgIdx-1]); + } + } else if (pFlag->status & OUTPUT_TARGET_NO_REGFILE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping %s, target of symbolic link %s is not a regular file.\n"), argv[ArgIdx-1], argv[ArgIdx]); + } + } else if (pFlag->status & BINARY_FILE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping binary file %s\n"), argv[ArgIdx-1]); + } + } else if (pFlag->status & WRONG_CODEPAGE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("code page %d is not supported.\n"), pFlag->ConvMode); + } + } else if (pFlag->status & LOCALE_NOT_UTF8) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping UTF-16 file %s, the current locale character encoding is not UTF-8.\n"), argv[ArgIdx-1]); + } + } else if (pFlag->status & WCHAR_T_TOO_SMALL) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping UTF-16 file %s, the size of wchar_t is %d bytes.\n"), argv[ArgIdx-1], (int)sizeof(wchar_t)); + } + } else if (pFlag->status & UNICODE_CONVERSION_ERROR) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping UTF-16 file %s, an UTF-16 conversion error occurred.\n"), argv[ArgIdx-1]); + } + } else { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("converting file %s to file %s in Unix format ...\n"), argv[ArgIdx-1], argv[ArgIdx]); + } + if (RetVal) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("problems converting file %s to file %s\n"), argv[ArgIdx-1], argv[ArgIdx]); + } + } + } + CanSwitchFileMode = 1; + } + } + else + { + RetVal = ConvertDosToUnixNewFile(argv[ArgIdx], argv[ArgIdx], pFlag, progname); + if (pFlag->status & NO_REGFILE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping %s, not a regular file.\n"), argv[ArgIdx]); + } + } else if (pFlag->status & OUTPUTFILE_SYMLINK) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping symbolic link %s.\n"), argv[ArgIdx]); + } + } else if (pFlag->status & INPUT_TARGET_NO_REGFILE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping symbolic link %s, target is not a regular file.\n"), argv[ArgIdx]); + } + } else if (pFlag->status & BINARY_FILE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping binary file %s\n"), argv[ArgIdx]); + } + } else if (pFlag->status & WRONG_CODEPAGE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("code page %d is not supported.\n"), pFlag->ConvMode); + } + } else if (pFlag->status & LOCALE_NOT_UTF8) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping UTF-16 file %s, the current locale character encoding is not UTF-8.\n"), argv[ArgIdx]); + } + } else if (pFlag->status & WCHAR_T_TOO_SMALL) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping UTF-16 file %s, the size of wchar_t is %d bytes.\n"), argv[ArgIdx], (int)sizeof(wchar_t)); + } + } else if (pFlag->status & UNICODE_CONVERSION_ERROR) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping UTF-16 file %s, an UTF-16 conversion error occurred.\n"), argv[ArgIdx]); + } + } else { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("converting file %s to Unix format ...\n"), argv[ArgIdx]); + } + if (RetVal) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("problems converting file %s\n"), argv[ArgIdx]); + } + } + } + } + } + } + + /* no file argument, use stdin and stdout */ + if (pFlag->stdio_mode) + { + exit(ConvertDosToUnixStdio(pFlag, progname)); + } + + + if (!CanSwitchFileMode) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("target of file %s not specified in new file mode\n"), argv[ArgIdx-1]); + pFlag->error = 1; + } + return (pFlag->error); +} + diff --git a/dos2unix.h b/dos2unix.h new file mode 100644 index 0000000..247d6a5 --- /dev/null +++ b/dos2unix.h @@ -0,0 +1,222 @@ +/* + * Copyright (C) 2009-2011 Erwin Waterlander + * Copyright (C) 1994-1995 Benjamin Lin. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice in the documentation and/or other materials provided with + * the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __DOS2UNIX_H +#define __DOS2UNIX_H + +#ifdef __GNUC__ +#ifndef strcmpi +# define strcmpi(s1, s2) strcasecmp(s1, s2) +#endif +#endif + +/* ASCII mode. No conversion. */ + +static int D2UAsciiTable[256] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87', '\x88', '\x89', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f', + '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97', '\x98', '\x99', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f', + '\xa0', '\xa1', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6', '\xa7', '\xa8', '\xa9', '\xaa', '\xab', '\xac', '\xad', '\xae', '\xaf', + '\xb0', '\xb1', '\xb2', '\xb3', '\xb4', '\xb5', '\xb6', '\xb7', '\xb8', '\xb9', '\xba', '\xbb', '\xbc', '\xbd', '\xbe', '\xbf', + '\xc0', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7', '\xc8', '\xc9', '\xca', '\xcb', '\xcc', '\xcd', '\xce', '\xcf', + '\xd0', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6', '\xd7', '\xd8', '\xd9', '\xda', '\xdb', '\xdc', '\xdd', '\xde', '\xdf', + '\xe0', '\xe1', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6', '\xe7', '\xe8', '\xe9', '\xea', '\xeb', '\xec', '\xed', '\xee', '\xef', + '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7', '\xf8', '\xf9', '\xfa', '\xfb', '\xfc', '\xfd', '\xfe', '\xff', +}; + + +/* 7bit mode. */ +/* All 8 bit non-ASCII characters are converted to a space (\x20) */ + +static int D2U7BitTable[256] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', + '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', + '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', + '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', + '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', + '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', + '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', + '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', +}; + + +/* CP437 -> ISO-8859-1 */ +/* Non-convertable characters are converted to a dot (\x2e) */ + +static int D2UIso437Table[256] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\xc7', '\xfc', '\xe9', '\xe2', '\xe4', '\xe0', '\xe5', '\xe7', '\xea', '\xeb', '\xe8', '\xef', '\xee', '\xec', '\xc4', '\xc5', + '\xc9', '\xe6', '\xc6', '\xf4', '\xf6', '\xf2', '\xfb', '\xf9', '\xff', '\xd6', '\xdc', '\xa2', '\xa3', '\xa5', '\x2e', '\x2e', + '\xe1', '\xed', '\xf3', '\xfa', '\xf1', '\xd1', '\xaa', '\xba', '\xbf', '\x2e', '\xac', '\xbd', '\xbc', '\xa1', '\xab', '\xbb', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\xdf', '\x2e', '\x2e', '\x2e', '\x2e', '\xb5', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\xb1', '\x2e', '\x2e', '\x2e', '\x2e', '\xf7', '\x2e', '\xb0', '\x2e', '\xb7', '\x2e', '\x2e', '\xb2', '\x2e', '\xa0', +}; + +/* CP850 -> ISO-8859-1 */ +/* Non-convertable characters are converted to a dot (\x2e) */ + +static int D2UIso850Table[256] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\xc7', '\xfc', '\xe9', '\xe2', '\xe4', '\xe0', '\xe5', '\xe7', '\xea', '\xeb', '\xe8', '\xef', '\xee', '\xec', '\xc4', '\xc5', + '\xc9', '\xe6', '\xc6', '\xf4', '\xf6', '\xf2', '\xfb', '\xf9', '\xff', '\xd6', '\xdc', '\xf8', '\xa3', '\xd8', '\xd7', '\x2e', + '\xe1', '\xed', '\xf3', '\xfa', '\xf1', '\xd1', '\xaa', '\xba', '\xbf', '\xae', '\xac', '\xbd', '\xbc', '\xa1', '\xab', '\xbb', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\xc1', '\xc2', '\xc0', '\xa9', '\x2e', '\x2e', '\x2e', '\x2e', '\xa2', '\xa5', '\x2e', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\xe3', '\xc3', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\xa4', + '\xf0', '\xd0', '\xca', '\xcb', '\xc8', '\x2e', '\xcd', '\xce', '\xcf', '\x2e', '\x2e', '\x2e', '\x2e', '\xa6', '\xcc', '\x2e', + '\xd3', '\xdf', '\xd4', '\xd2', '\xf5', '\xd5', '\xb5', '\xfe', '\xde', '\xda', '\xdb', '\xd9', '\xfd', '\xdd', '\xaf', '\xb4', + '\xad', '\xb1', '\x2e', '\xbe', '\xb6', '\xa7', '\xf7', '\xb8', '\xb0', '\xa8', '\xb7', '\xb9', '\xb3', '\xb2', '\x2e', '\xa0', +}; + +/* CP860 -> ISO-8859-1 */ +/* Non-convertable characters are converted to a dot (\x2e) */ + +static int D2UIso860Table[256] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\xc7', '\xfc', '\xe9', '\xe2', '\xe3', '\xe0', '\xc1', '\xe7', '\xea', '\xca', '\xe8', '\xcd', '\xd4', '\xec', '\xc3', '\xc2', + '\xc9', '\xc0', '\xc8', '\xf4', '\xf5', '\xf2', '\xda', '\xf9', '\xcc', '\xd5', '\xdc', '\xa2', '\xa3', '\xd9', '\x2e', '\xd3', + '\xe1', '\xed', '\xf3', '\xfa', '\xf1', '\xd1', '\xaa', '\xba', '\xbf', '\xd2', '\xac', '\xbd', '\xbc', '\xa1', '\xab', '\xbb', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\xdf', '\x2e', '\x2e', '\x2e', '\x2e', '\xb5', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\xb1', '\x2e', '\x2e', '\x2e', '\x2e', '\xf7', '\x2e', '\xb0', '\x2e', '\xb7', '\x2e', '\x2e', '\xb2', '\x2e', '\xa0', +}; + +/* CP863 -> ISO-8859-1 */ +/* Non-convertable characters are converted to a dot (\x2e) */ + +static int D2UIso863Table[256] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\xc7', '\xfc', '\xe9', '\xe2', '\xc2', '\xe0', '\xb6', '\xe7', '\xea', '\xeb', '\xe8', '\xef', '\xee', '\x2e', '\xc0', '\xa7', + '\xc9', '\xc8', '\xca', '\xf4', '\xcb', '\xcf', '\xfb', '\xf9', '\xa4', '\xd4', '\xdc', '\xa2', '\xa3', '\xd9', '\xdb', '\x2e', + '\xa6', '\xb4', '\xf3', '\xfa', '\xa8', '\xb8', '\xb3', '\xaf', '\xce', '\x2e', '\xac', '\xbd', '\xbc', '\xbe', '\xab', '\xbb', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\xdf', '\x2e', '\x2e', '\x2e', '\x2e', '\xb5', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\xb1', '\x2e', '\x2e', '\x2e', '\x2e', '\xf7', '\x2e', '\xb0', '\x2e', '\xb7', '\x2e', '\x2e', '\xb2', '\x2e', '\xa0', +}; + +/* CP865 -> ISO-8859-1 */ +/* Non-convertable characters are converted to a dot (\x2e) */ + +static int D2UIso865Table[256] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\xc7', '\xfc', '\xe9', '\xe2', '\xe4', '\xe0', '\xe5', '\xe7', '\xea', '\xeb', '\xe8', '\xef', '\xee', '\xec', '\xc4', '\xc5', + '\xc9', '\xe6', '\xc6', '\xf4', '\xf6', '\xf2', '\xfb', '\xf9', '\xff', '\xd6', '\xdc', '\xf8', '\xa3', '\xd8', '\x2e', '\x2e', + '\xe1', '\xed', '\xf3', '\xfa', '\xf1', '\xd1', '\xaa', '\xba', '\xbf', '\x2e', '\xac', '\xbd', '\xbc', '\xa1', '\xab', '\xa4', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\xdf', '\x2e', '\x2e', '\x2e', '\x2e', '\xb5', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\xb1', '\x2e', '\x2e', '\x2e', '\x2e', '\xf7', '\x2e', '\xb0', '\x2e', '\xb7', '\x2e', '\x2e', '\xb2', '\x2e', '\xa0', +}; + +/* CP1252 -> ISO-8859-1 */ +/* Non-convertable characters are converted to a dot (\x2e) */ + +static int D2UIso1252Table[256] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\xa0', '\xa1', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6', '\xa7', '\xa8', '\xa9', '\xaa', '\xab', '\xac', '\xad', '\xae', '\xaf', + '\xb0', '\xb1', '\xb2', '\xb3', '\xb4', '\xb5', '\xb6', '\xb7', '\xb8', '\xb9', '\xba', '\xbb', '\xbc', '\xbd', '\xbe', '\xbf', + '\xc0', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7', '\xc8', '\xc9', '\xca', '\xcb', '\xcc', '\xcd', '\xce', '\xcf', + '\xd0', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6', '\xd7', '\xd8', '\xd9', '\xda', '\xdb', '\xdc', '\xdd', '\xde', '\xdf', + '\xe0', '\xe1', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6', '\xe7', '\xe8', '\xe9', '\xea', '\xeb', '\xec', '\xed', '\xee', '\xef', + '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7', '\xf8', '\xf9', '\xfa', '\xfb', '\xfc', '\xfd', '\xfe', '\xff', +}; + +#endif diff --git a/man/es/man1/dos2unix.pod b/man/es/man1/dos2unix.pod new file mode 100755 index 0000000..3144580 --- /dev/null +++ b/man/es/man1/dos2unix.pod @@ -0,0 +1,548 @@ +/* +# +# Spanish tranlation by: Julio A. Freyre-Gonzalez <jfreyreg@gmail.com> 2011, 2012 +# +# Copyright and License +# +# Copyright (C) 2009-2012 Erwin Waterlander +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice in the documentation and/or other materials provided with +# the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Descripción +# +# Para saber cual sección de NIVEL SUPERIOR usar en las páginas del manual, +# véase el estándar POSIX/Susv y "Utility Description Defaults" en +# http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap01.html#tag_01_11 +# +# Éste es el manual en formato POD de Perl. Lease más en +# http://perldoc.perl.org/perlpod.html o ejecute el comando: +# +# perldoc perlpod | less +# +# Para revisar la sintaxis: +# +# podchecker *.pod +# +# Cree el manual con el comando: +# +# pod2man PAGE.N.pod > PAGE.N +*/ + +=pod + +=head1 NOMBRE + +dos2unix - Convertidor de archivos de texto de formato DOS/Mac a Unix y viceversa + +=head1 SINOPSIS + + dos2unix [parámetros] [ARCHIVO ...] [-n ARCH_DE_ENTRADA ARCH_DE_SALIDA ...] + unix2dos [parámetros] [ARCHIVO ...] [-n ARCH_DE_ENTRADA ARCH_DE_SALIDA ...] + +=head1 DESCRIPCIÓN + +El paquete Dos2unix incluye las utilerías C<dos2unix> y C<unix2dos> para +convertir archivos de texto plano en formato DOS o Mac a formato Unix y viceversa. + +En archivos de texto DOS/Windows, un salto de línea, también conocido como nueva +línea, es una combinación de dos caracteres: un retorno de carro (CR) seguido +por un salto de línea (LF). En archivos de texto Unix, un salto de línea es +solamente un carácter: el salto de línea (LF). En archivos de texto Mac, antes +de Mac OS X, un salto de línea era sólo un carácter retorno de carro (CR). +Actualmente, Mac OS usa el estilo Unix de saltos de línea (LF). + +Los archivos binarios son ignorados automáticamente, a menos que se fuerce su +conversión. + +Los archivos no regulares, tales como directorios y FIFO, son ignorados +automáticamente. + +Los enlaces simbólicos y sus destinos no son modificados por defecto. +Los enlaces simbólicos pueden opcionalmente ser reemplazados, o la salida puede +ser escrita al archivo destino del enlace. +Los enlaces simbólicos en Windows no están soportados. Estos son siempre +reemplazados, sin que se alteren sus destinos. + +Dos2unix fue moldeado a partir del dos2unix que existe en SunOS/Solaris y tiene +modos de conversión similares. + +=head1 PARÁMETROS + +=over 4 + +=item B<--> + +Todos los parámetros siguientes son tratados como nombres de archivo. Use este +parámetro si desea convertir archivos cuyos nombres inician con un guión. Por +ejemplo para convertir un archivo llamado "-foo", use este comando: + + dos2unix -- -foo + +O en modo de archivo nuevo: + + dos2unix -n -- -foo out.txt + +=item B<-ascii> + +Sólo convierte los salto de línea. Éste es el modo de conversión por defecto. + +=item B<-iso> + +Conversión entre el conjunto de caracteres DOS e ISO-8859-1. Véase también la +sección MODOS DE CONVERSIÓN. + +=item B<-1252> + +Usa la página de códigos Windows 1252 (Europa Occidental). + +=item B<-437> + +Usa la página de códigos DOS 437 (EE. UU.). Está es la página de códigos usada +por defecto para conversión ISO. + +=item B<-850> + +Usa la página de códigos DOS 850 (Europa Occidental). + +=item B<-860> + +Usa la página de códigos DOS 860 (Portugués). + +=item B<-863> + +Usa la página de códigos DOS 863 (Francocanadiense). + +=item B<-865> + +Usa la página de códigos DOS 865 (Nórdico). + +=item B<-7> + +Convierte caracteres de 8 bits al espacio de 7 bits. + +=item B<-c, --convmode CONVMODE> + +Establece el modo de conversión, Donde CONVMODE puede ser: +I<ascii>, I<7bit>, I<iso>, I<mac> +siendo ascii el valor por defecto. + +=item B<-f, --force> + +Fuerza la conversión de archivos binarios. + +=item B<-h, --help> + +Despiega la ayuda y termina el programa. + +=item B<-k, --keepdate> + +Mantiene la fecha del archivo de salida igual a la del archivo de entrada. + +=item B<-L, --license> + +Muestra la licencia del programa. + +=item B<-l, --newline> + +Añade salto de línea adicional. + +B<dos2unix>: Sólo los saltos de línea DOS son cambiados por dos saltos de línea +Unix. +En modo Mac sólo los saltos de línea Mac son cambiados por dos saltos de línea +Unix. + +B<unix2dos>: Sólo los saltos de línea Unix son cambiados por dos saltos de línea +DOS. +En modo Mac los saltos de línea Unix son cambiados por dos saltos de línea Mac. + +=item B<-m, --add-bom> + +Write an UTF-8 Byte Order Mark in the output file. Never use this option when +the output encoding is other than UTF-8. See also section UNICODE. + +=item B<-n, --newfile ARCH_DE_ENTRADA ARCH_DE_SALIDA ...> + +Modo de archivo nuevo. Convierte el archivo ARCH_DE_ENTRADA y escribe la salida +al archivo ARCH_DE_SALIDA. +Los nombres de archivo deben ser dados en pares y los comodines I<no> deben ser +usados o I<perderá> sus archivos. + +=item B<-o, --oldfile ARCHIVO ...> + +Modo de archivo viejo. Convierte el archivo ARCHIVO y lo sobrescribe con la salida. +El programa por defecto se ejecuta en este modo. Sí se pueden emplear comodines. + +=item B<-q, --quiet> + +Modo silencioso. Suprime todas las advertencias y mensajes. El valor retornado +es cero. Excepto cuando se emplean parámetros incorrectos. + +=item B<-s, --safe> + +Ignora los archivos binarios (por defecto). + +=item B<-F, --follow-symlink> + +Sigue los enlaces simbólicos y convierte los destinos. + +=item B<-R, --replace-symlink> + +Reemplaza los enlaces simbólicos con los archivos convertidos +(los archivos destino originales no se alteran). + +=item B<-S, --skip-symlink> + +No altera los enlaces simbólicos ni sus destinos (por defecto). + +=item B<-V, --version> + +Despiega la información de la versión y termina el programa. + +=back + +=head1 MODO MAC + +En modo normal los saltos de línea son convertidos de DOS a Unix y viceversa. +Los saltos de línea Mac no son convertidos. + +En modo Mac los saltos de línea son convertidos de Mac a Unix y viceversa. Los +saltos de línea DOS no son modificados. + +Para ejecutar en modo Mac use el modificador C<-c mac> o use los comandos +C<mac2unix> o C<unix2mac>. + +=head1 MODOS DE CONVERSIÓN + +Los modos de conversión I<ascii>, I<7bit>, e I<iso> son similares a los de +los comandos dos2unix/unix2dos de SunOS/Solaris. + +=over 4 + +=item B<ascii> + +En modo C<ascii> sólo los saltos de línea son convertidos. Éste es el modo de +conversión por defecto. + +Aunque el nombre de este modo es ASCII, el cual es un estándar de 7 bits, éste +emplea 8 bits. Siempre use este modo cuando convierta archivos en Unicode UTF-8. + +=item B<7bit> + +En este modo todos los caracteres no ASCII de 8 bits (con valores de 128 a 255) +son convertidos al espacio de 7 bits. + +=item B<iso> + +Los caracteres son convertidos entre un conjunto de caracteres DOS (página de +códigos) y el conjunto de caracteres ISO-8859-1 (Latín-1) de Unix. Los +caracteres DOS sin equivalente ISO-8859-1, para los cuales la conversión es +imposible, son convertidos en un punto. Lo mismo se aplica para caracteres +ISO-8859-1 sin contraparte DOS. + +Cuando sólo se emplea el parámetro C<-iso>, dos2unix intentará determinar la +página de códigos activa. Cuando esto no sea posible, dos2unix utilizará la +página de códigos 437 por defecto, la cual es empleada principalmente en EE. UU. +Para forzar una página de códigos específica emplee los parámetros +C<-437> (EE. UU.), C<-850> (Europa Occidental), C<-860> (Portugués), +C<-863> (Francocanadiense), o C<-865> (Nórdico). La página de códigos Windows +1252 (Europa Occidental) también está soportada con el parámetro C<-1252>. Para +acceder a otras páginas de códigos use dos2unix en combinación con iconv(1). +Iconv puede convertir entre una larga lista de codificaciones de caracteres. + +Never use ISO converion on Unicode text files. It will corrupt UTF-8 encoded files. + +Algunos ejemplos: + +Convierte de la página de códigos por defecto de DOS a Latín-1 de Unix. + + dos2unix -iso -n in.txt out.txt + +Convierte de DOS 850 a Unix Latín-1. + + dos2unix -850 -n in.txt out.txt + +Convierte de Windows 1252 a Unix Latín-1. + + dos2unix -1252 -n in.txt out.txt + +Convierte de Windows 1252 a Unix UTF-8 (Unicode). + + iconv -f CP1252 -t UTF-8 in.txt | dos2unix > out.txt + +Convierte de Unix Latín-1 a la página de códigos por defecto de DOS. + + unix2dos -iso -n in.txt out.txt + +Convierte de Unix Latín-1 a DOS 850. + + unix2dos -850 -n in.txt out.txt + +Convierte de Unix Latín-1 a Windows 1252. + + unix2dos -1252 -n in.txt out.txt + +Convierte de Unix UTF-8 (Unicode) a Windows 1252. + + unix2dos < in.txt | iconv -f UTF-8 -t CP1252 > out.txt + +Véase también L<http://czyborra.com/charsets/codepages.html> +y L<http://czyborra.com/charsets/iso8859.html>. + +=back + +=head1 UNICODE + +=head2 Encodings + +There exist different Unicode encodings. On Unix and Linux Unicode files are +typically encoded in UTF-8 encoding. On Windows Unicode text files can be +encoded in UTF-8, UTF-16, or UTF-16 big endian, but are mostly encoded in +UTF-16 format. + +=head2 Conversion + +Unicode text files can have DOS, Unix or Mac line breaks, like regular text +files. + +All versions of dos2unix and unix2dos can convert UTF-8 encoded files, because +UTF-8 was designed for backward compatiblity with ASCII. + +Dos2unix and unix2dos with Unicode UTF-16 support, can read little and big +endian UTF-16 encoded text files. To see if dos2unix was built with UTF-16 +support type C<dos2unix -V>. + +The Windows versions of dos2unix and unix2dos convert UTF-16 encoded files +always to UTF-8 encoded files. Unix versions of dos2unix/unix2dos convert +UTF-16 encoded files to the locale character encoding when it is set to UTF-8. +Use the locale(1) command to find out what the locale character encoding is. + +Because UTF-8 formatted text files are well supported on both Windows and Unix, +dos2unix and unix2dos have no option to write UTF-16 files. All UTF-16 +characters can be encoded in UTF-8. Conversion from UTF-16 to UTF-8 is without +loss. UTF-16 files will be skipped on Unix when the locale character encoding +is not UTF-8, to prevent accidental loss of text. When an UTF-16 to UTF-8 +conversion error occurs, for instance when the UTF-16 input file contains +an error, the file will be skipped. + +ISO and 7-bit mode conversion do not work on UTF-16 files. + +=head2 Byte Order Mark + +On Windows Unicode text files typically have a Byte Order Mark (BOM), because +many Windows programs (including Notepad) add BOMs by default. See also +L<http://en.wikipedia.org/wiki/Byte_order_mark>. + +On Unix Unicode files typically don't have a BOM. It is assumed that text files +are encoded in the locale character encoding. + +Dos2unix can only detect if a file is in UTF-16 format if the file has a BOM. +When an UTF-16 file doesn't have a BOM, dos2unix will see the file as a binary +file. + +Use dos2unix in combination with iconv(1) to convert an UTF-16 file without +BOM. + +Dos2unix never writes a BOM in the output file, unless you use option C<-m>. + +Unix2dos writes a BOM in the output file when the input file has a BOM, or +when option C<-m> is used. + +=head2 Unicode examples + +Convert from Windows UTF-16 (with BOM) to Unix UTF-8 + + dos2unix -n in.txt out.txt + +Convert from Windows UTF-16 (without BOM) to Unix UTF-8 + + iconv -f UTF-16 -t UTF-8 in.txt | dos2unix > out.txt + +Convert from Unix UTF-8 to Windows UTF-8 with BOM + + unix2dos -m -n in.txt out.txt + +Convert from Unix UTF-8 to Windows UTF-16 + + unix2dos < in.txt | iconv -f UTF-8 -t UTF-16 > out.txt + +=head1 EJEMPLOS + +Lee la entrada desde 'stdin' y escribe la salida a 'stdout'. + + dos2unix + dos2unix -l -c mac + +Convierte y reemplaza a.txt. Convierte y reemplaza b.txt. + + dos2unix a.txt b.txt + dos2unix -o a.txt b.txt + +Convierte y reemplaza a.txt empleando modo de conversión ascii. + + dos2unix a.txt + +Convierte y reemplaza a.txt empleando modo de conversión ascii. +Convierte y reemplaza b.txt empleando modo de conversión de 7bits. + + dos2unix a.txt -c 7bit b.txt + dos2unix -c ascii a.txt -c 7bit b.txt + dos2unix -ascii a.txt -7 b.txt + +Convierte a.txt del formato de Mac a Unix. + + dos2unix -c mac a.txt + mac2unix a.txt + +Convierte a.txt del formato de Unix a Mac. + + unix2dos -c mac a.txt + unix2mac a.txt + +Convierte y reemplaza a.txt manteniendo la fecha del archivo original. + + dos2unix -k a.txt + dos2unix -k -o a.txt + +Convierte a.txt y escribe la salida a e.txt. + + dos2unix -n a.txt e.txt + +Convierte a.txt y escribe la salida a e.txt, manteniendo la fecha de e.txt +igual a la de a.txt. + + dos2unix -k -n a.txt e.txt + +Convierte y reemplaza a.txt. Convierte b.txt y escribe a e.txt. + + dos2unix a.txt -n b.txt e.txt + dos2unix -o a.txt -n b.txt e.txt + +Convierte c.txt y escribe a e.txt. Convierte y reemplaza a.txt. +Convierte y reemplaza b.txt. Convierte d.txt y escribe a f.txt. + + dos2unix -n c.txt e.txt -o a.txt b.txt -n d.txt f.txt + +=head1 RECURSIVE CONVERSION + +Use dos2unix in combination with the find(1) and xargs(1) commands to +recursively convert text files in a directory tree structure. For instance to +convert all .txt files in the directory tree under the current directory type: + + find . -name *.txt |xargs dos2unix + + +=head1 INTERNACIONALIZACIÓN + +=over 4 + +=item B<LANG> + +El idioma principal se selecciona con la variable de entorno LANG. La variable +LANG consiste de varias partes. La primer parte es el código del idioma en +minúsculas. La segunda es opcional y es el código del país en mayúsculas, +precedido por un guión bajo. Existe también una tercera parte opcional: la +codificación de caracteres, precedida por un punto. Unos cuantos ejemplos para +intérpretes de comandos tipo POSIX estándar: + + export LANG=nl Neerlandés + export LANG=nl_NL Neerlandés, Países Bajos + export LANG=nl_BE Neerlandés, Bélgica + export LANG=es_ES Español, España + export LANG=es_MX Español, México + export LANG=en_US.iso88591 Ingles, EE. UU., codificación Latín-1 + export LANG=en_GB.UTF-8 Ingles, Reino Unido, codificación UTF-8 + +Para una lista completa de códigos de idioma y país véase el manual de gettext: +L<http://www.gnu.org/software/gettext/manual/gettext.html#Language-Codes> + +En sistemas Unix puede emplear el comando locale(1) para obtener información +específica del locale. + +=item B<LANGUAGE> + +Con la variable de entorno LANGUAGE puede especificar una lista de prioridad +de los idiomas, separados por dos puntos. Dos2unix da preferencia a LANGUAGE +por encima de LANG. Por ejemplo, primero neerlandés y entonces alemán: +C<LANGUAGE=nl:de>. Antes de que pueda usar una lista de prioridad de idiomas a +través de la variable LANGUAGE, primero tiene que habilitar la +internacionalización, mediante asignar un valor distinto de "C" a LANG +(o LC_ALL). Véase también el manual de gettext: +L<http://www.gnu.org/software/gettext/manual/gettext.html#The-LANGUAGE-variable> + +Si selecciona un idioma que no está disponible el programa funcionará en ingles. + +=item B<DOS2UNIX_LOCALEDIR> + +Con la variable de entorno DOS2UNIX_LOCALEDIR el LOCALEDIR asignado durante +la compilación puede ser modificado. LOCALEDIR es usado para encontrar los +archivos de idioma. El valor por defecto de GNU es C</usr/local/share/locale>. +El parámetro B<--version> desplegará el LOCALEDIR en uso. + +Ejemplo (intérprete de comandos POSIX): + + export DOS2UNIX_LOCALEDIR=$HOME/share/locale + +=back + + +=head1 VALOR DE RETORNO + +Se regresa cero cuando el programa termina exitosamente. Cuando ocurre un error +del sistema se regresará el último número de error del sistema. Para otros errores se +regresa 1. + +El valor de retorno es siempre cero en modo silencioso, excepto cuando se +emplean parámetros incorrectos. + +=head1 ESTÁNDARES + +L<http://es.wikipedia.org/wiki/Documento_de_texto> + +L<http://es.wikipedia.org/wiki/Retorno_de_carro> + +L<http://es.wikipedia.org/wiki/Nueva_l%C3%ADnea> + +L<http://es.wikipedia.org/wiki/Unicode> + +=head1 AUTORES + +Benjamin Lin - <blin@socs.uts.edu.au> +Bernd Johannes Wuebben (modo mac2unix) - <wuebben@kde.org>, +Christian Wurll (añadió el salto de línea extra) - <wurll@ira.uka.de>, +Erwin Waterlander - <waterlan@xs4all.nl> (Mantenimiento) + +Página del proyecto: L<http://waterlan.home.xs4all.nl/dos2unix.html> + +Página de SourceForge: L<http://sourceforge.net/projects/dos2unix/> + +Freshmeat: L<http://freshmeat.net/projects/dos2unix> + +=head1 VÉASE TAMBIÉN + +file(1) +find(1) +iconv(1) +locale(1) +xargs(1) + +=cut diff --git a/man/man1/Makefile b/man/man1/Makefile new file mode 100644 index 0000000..28b67a9 --- /dev/null +++ b/man/man1/Makefile @@ -0,0 +1,101 @@ +# pod2man.mk -- Makefile portion to convert *.pod files to manual pages +# +# Copyright information +# +# Copyright (C) 2010 Jari Aalto +# +# License +# +# Redistribution and use in source and binary forms, with or +# without modification, are permitted provided that the +# following conditions are met: +# +# 1. Redistributions of source code must retain the above +# copyright notice, this list of conditions and the following +# disclaimer. +# +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials +# provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) OF THIS +# FILE OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +# DAMAGE. +# +# The license text is copy of the FreeBSD License available at +# <http://www.gnu.org/copyleft/gpl.html> with following +# modifications: wording "THIS SOFTWARE IS PROVIDED BY THE +# FREEBSD PROJECT" was changed to "THIS SOFTWARE IS PROVIDED 'AS +# IS'" and wording "IN NO EVENT SHALL THE FREEBSD PROJECT" was +# changed to "IN NO EVENT SHALL THE AUTHOR(S)" +# +# Description +# +# Convert *.pod files to manual pages. + +ifneq (,) + This makefile requires GNU Make. +endif + +# This variable *must* be set when calling +PACKAGE ?= dos2unix + +# Optional variables to set +MANSECT ?= 1 +PODCENTER ?= $$(date "+%Y-%m-%d") + +# Directories +MANSRC = +MANDEST = $(MANSRC) + +MANPOD = $(MANSRC)$(PACKAGE).pod +MANPAGE = $(MANDEST)$(PACKAGE).$(MANSECT) + +POD2MAN = pod2man +POD2MAN_FLAGS = + +PODFILES = $(wildcard ../*/man1/dos2unix.pod) +MAN_OBJECTS = dos2unix.1 $(patsubst %.pod,%.1,$(PODFILES)) + +all: $(MAN_OBJECTS) + +%.1 : %.pod + # make target - create manual page from a *.pod page + podchecker $< + LC_CTYPE=C $(POD2MAN) $(POD2MAN_FLAGS) \ + --center="$(PODCENTER)" \ + --name="$(PACKAGE)" \ + --section="$(MANSECT)" \ + $< \ + | sed 's,[Pp]erl v[0-9.]\+,$(PACKAGE),' \ + > $@ && \ + rm -f pod*.tmp +# fix for bug http://rt.perl.org/rt3//Public/Bug/Display.html?id=79410 +# "Pod2man creates wrong ROFF esc sequences for Latin-1 characters." +# Create groff (specific) escape sequences which work also on DOS/Windows. +# See also: https://rt.cpan.org/Public/Bug/Display.html?id=73804 + perl -pli.bak \ + -e s/A\\\\\\*\'/\\\\[\'A]/g\; \ + -e s/a\\\\\\*\'/\\\\[\'a]/g\; \ + -e s/E\\\\\\*\'/\\\\[\'E]/g\; \ + -e s/e\\\\\\*:/\\\\[:e]/g\; \ + -e s/e\\\\\\*\'/\\\\[\'e]/g\; \ + -e s/i\\\\\\*\'/\\\\[\'i]/g\; \ + -e s/n\\\\\\*~/\\\\[~n]/g\; \ + -e s/O\\\\\\*\'/\\\\[\'O]/g\; \ + -e s/o\\\\\\*\'/\\\\[\'o]/g\; \ + -e s/u\\\\\\*\'/\\\\[\'u]/g\; \ + $@ + +# End of of Makefile part diff --git a/man/man1/dos2unix.pod b/man/man1/dos2unix.pod new file mode 100644 index 0000000..4793aa4 --- /dev/null +++ b/man/man1/dos2unix.pod @@ -0,0 +1,535 @@ +/* +# Copyright and License +# +# Copyright (C) 2009-2012 Erwin Waterlander +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice in the documentation and/or other materials provided with +# the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Description +# +# To learn what TOP LEVEL section to use in manual pages, +# see POSIX/Susv standard and "Utility Description Defaults" at +# http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap01.html#tag_01_11 +# +# This is manual page in Perl POD format. Read more at +# http://perldoc.perl.org/perlpod.html or run command: +# +# perldoc perlpod | less +# +# To check the syntax: +# +# podchecker *.pod +# +# Create manual page with command: +# +# pod2man PAGE.N.pod > PAGE.N +*/ + +=pod + +=head1 NAME + +dos2unix - DOS/Mac to Unix and vice versa text file format converter + +=head1 SYNOPSIS + + dos2unix [options] [FILE ...] [-n INFILE OUTFILE ...] + unix2dos [options] [FILE ...] [-n INFILE OUTFILE ...] + +=head1 DESCRIPTION + +The Dos2unix package includes utilities C<dos2unix> and C<unix2dos> to convert +plain text files in DOS or Mac format to Unix format and vice versa. + +In DOS/Windows text files a line break, also known as newline, is a combination +of two characters: a Carriage Return (CR) followed by a Line Feed (LF). In Unix +text files a line break is a single character: the Line Feed (LF). In Mac text +files, prior to Mac OS X, a line break was single Carriage Return (CR) +character. Nowadays Mac OS uses Unix style (LF) line breaks. + +Binary files are automatically skipped, unless conversion is forced. + +Non-regular files, such as directories and FIFOs, are automatically skipped. + +Symbolic links and their targets are by default kept untouched. +Symbolic links can optionally be replaced, or the output can be written +to the symbolic link target. +Symbolic links on Windows are not supported. Windows symbolic links +always replaced, keeping the targets unchanged. + +Dos2unix was modelled after dos2unix under SunOS/Solaris and has similar +conversion modes. + +=head1 OPTIONS + +=over 4 + +=item B<--> + +Treat all following options as file names. Use this option if you want to +convert files whose names start with a dash. For instance to convert +a file named "-foo", you can use this command: + + dos2unix -- -foo + +Or in new file mode: + + dos2unix -n -- -foo out.txt + +=item B<-ascii> + +Convert only line breaks. This is the default conversion mode. + +=item B<-iso> + +Conversion between DOS and ISO-8859-1 character set. See also section +CONVERSION MODES. + +=item B<-1252> + +Use Windows code page 1252 (Western European). + +=item B<-437> + +Use DOS code page 437 (US). This is the default code page used for ISO conversion. + +=item B<-850> + +Use DOS code page 850 (Western European). + +=item B<-860> + +Use DOS code page 860 (Portuguese). + +=item B<-863> + +Use DOS code page 863 (French Canadian). + +=item B<-865> + +Use DOS code page 865 (Nordic). + +=item B<-7> + +Convert 8 bit characters to 7 bit space. + +=item B<-c, --convmode CONVMODE> + +Set conversion mode. Where CONVMODE is one of: +I<ascii>, I<7bit>, I<iso>, I<mac> +with ascii being the default. + +=item B<-f, --force> + +Force conversion of binary files. + +=item B<-h, --help> + +Display help and exit. + +=item B<-k, --keepdate> + +Keep the date stamp of output file same as input file. + +=item B<-L, --license> + +Display program's license. + +=item B<-l, --newline> + +Add additional newline. + +B<dos2unix>: Only DOS line breaks are changed to two Unix line breaks. +In Mac mode only Mac line breaks are changed to two Unix +line breaks. + +B<unix2dos>: Only Unix line breaks are changed to two DOS line breaks. +In Mac mode Unix line breaks are changed to two Mac line breaks. + +=item B<-m, --add-bom> + +Write an UTF-8 Byte Order Mark in the output file. Never use this option when +the output encoding is other than UTF-8. See also section UNICODE. + +=item B<-n, --newfile INFILE OUTFILE ...> + +New file mode. Convert file INFILE and write output to file OUTFILE. +File names must be given in pairs and wildcard names should I<not> be +used or you I<will> lose your files. + +=item B<-o, --oldfile FILE ...> + +Old file mode. Convert file FILE and overwrite output to it. The program +default to run in this mode. Wildcard names may be used. + +=item B<-q, --quiet> + +Quiet mode. Suppress all warnings and messages. The return value is zero. +Except when wrong command-line options are used. + +=item B<-s, --safe> + +Skip binary files (default). + +=item B<-F, --follow-symlink> + +Follow symbolic links and convert the targets. + +=item B<-R, --replace-symlink> + +Replace symbolic links with converted files +(original target files remain unchanged). + +=item B<-S, --skip-symlink> + +Keep symbolic links and targets unchanged (default). + +=item B<-V, --version> + +Display version information and exit. + +=back + +=head1 MAC MODE + +In normal mode line breaks are converted from DOS to Unix and vice versa. +Mac line breaks are not converted. + +In Mac mode line breaks are converted from Mac to Unix and vice versa. DOS +line breaks are not changed. + +To run in Mac mode use the command-line option C<-c mac> or use the +commands C<mac2unix> or C<unix2mac>. + +=head1 CONVERSION MODES + +Conversion modes I<ascii>, I<7bit>, and I<iso> +are similar to those of dos2unix/unix2dos under SunOS/Solaris. + +=over 4 + +=item B<ascii> + +In mode C<ascii> only line breaks are converted. This is the default +conversion mode. + +Although the name of this mode is ASCII, which is a 7 bit standard, the +actual mode is 8 bit. Use always this mode when converting Unicode UTF-8 +files. + +=item B<7bit> + +In this mode all 8 bit non-ASCII characters (with values from 128 to 255) +are converted to a 7 bit space. + +=item B<iso> + +Characters are converted between a DOS character set (code page) and ISO +character set ISO-8859-1 (Latin-1) on Unix. DOS characters without ISO-8859-1 +equivalent, for which conversion is not possible, are converted to a dot. The +same counts for ISO-8859-1 characters without DOS counterpart. + +When only option C<-iso> is used dos2unix will try to determine the active code +page. When this is not possible dos2unix will use default code page CP437, +which is mainly used in the USA. To force a specific code page use options +C<-437> (US), C<-850> (Western European), C<-860> (Portuguese), C<-863> (French +Canadian), or C<-865> (Nordic). Windows code page CP1252 (Western European) is +also supported with option C<-1252>. For other code pages use dos2unix in +combination with iconv(1). Iconv can convert between a long list of character +encodings. + +Never use ISO converion on Unicode text files. It will corrupt UTF-8 encoded files. + +Some examples: + +Convert from DOS default code page to Unix Latin-1 + + dos2unix -iso -n in.txt out.txt + +Convert from DOS CP850 to Unix Latin-1 + + dos2unix -850 -n in.txt out.txt + +Convert from Windows CP1252 to Unix Latin-1 + + dos2unix -1252 -n in.txt out.txt + +Convert from Windows CP1252 to Unix UTF-8 (Unicode) + + iconv -f CP1252 -t UTF-8 in.txt | dos2unix > out.txt + +Convert from Unix Latin-1 to DOS default code page. + + unix2dos -iso -n in.txt out.txt + +Convert from Unix Latin-1 to DOS CP850 + + unix2dos -850 -n in.txt out.txt + +Convert from Unix Latin-1 to Windows CP1252 + + unix2dos -1252 -n in.txt out.txt + +Convert from Unix UTF-8 (Unicode) to Windows CP1252 + + unix2dos < in.txt | iconv -f UTF-8 -t CP1252 > out.txt + +See also L<http://czyborra.com/charsets/codepages.html> +and L<http://czyborra.com/charsets/iso8859.html>. + +=back + +=head1 UNICODE + +=head2 Encodings + +There exist different Unicode encodings. On Unix and Linux Unicode files are +typically encoded in UTF-8 encoding. On Windows Unicode text files can be +encoded in UTF-8, UTF-16, or UTF-16 big endian, but are mostly encoded in +UTF-16 format. + +=head2 Conversion + +Unicode text files can have DOS, Unix or Mac line breaks, like regular text +files. + +All versions of dos2unix and unix2dos can convert UTF-8 encoded files, because +UTF-8 was designed for backward compatiblity with ASCII. + +Dos2unix and unix2dos with Unicode UTF-16 support, can read little and big +endian UTF-16 encoded text files. To see if dos2unix was built with UTF-16 +support type C<dos2unix -V>. + +The Windows versions of dos2unix and unix2dos convert UTF-16 encoded files +always to UTF-8 encoded files. Unix versions of dos2unix/unix2dos convert +UTF-16 encoded files to the locale character encoding when it is set to UTF-8. +Use the locale(1) command to find out what the locale character encoding is. + +Because UTF-8 formatted text files are well supported on both Windows and Unix, +dos2unix and unix2dos have no option to write UTF-16 files. All UTF-16 +characters can be encoded in UTF-8. Conversion from UTF-16 to UTF-8 is without +loss. UTF-16 files will be skipped on Unix when the locale character encoding +is not UTF-8, to prevent accidental loss of text. When an UTF-16 to UTF-8 +conversion error occurs, for instance when the UTF-16 input file contains +an error, the file will be skipped. + +ISO and 7-bit mode conversion do not work on UTF-16 files. + +=head2 Byte Order Mark + +On Windows Unicode text files typically have a Byte Order Mark (BOM), because +many Windows programs (including Notepad) add BOMs by default. See also +L<http://en.wikipedia.org/wiki/Byte_order_mark>. + +On Unix Unicode files typically don't have a BOM. It is assumed that text files +are encoded in the locale character encoding. + +Dos2unix can only detect if a file is in UTF-16 format if the file has a BOM. +When an UTF-16 file doesn't have a BOM, dos2unix will see the file as a binary +file. + +Use dos2unix in combination with iconv(1) to convert an UTF-16 file without +BOM. + +Dos2unix never writes a BOM in the output file, unless you use option C<-m>. + +Unix2dos writes a BOM in the output file when the input file has a BOM, or +when option C<-m> is used. + +=head2 Unicode examples + +Convert from Windows UTF-16 (with BOM) to Unix UTF-8 + + dos2unix -n in.txt out.txt + +Convert from Windows UTF-16 (without BOM) to Unix UTF-8 + + iconv -f UTF-16 -t UTF-8 in.txt | dos2unix > out.txt + +Convert from Unix UTF-8 to Windows UTF-8 with BOM + + unix2dos -m -n in.txt out.txt + +Convert from Unix UTF-8 to Windows UTF-16 + + unix2dos < in.txt | iconv -f UTF-8 -t UTF-16 > out.txt + +=head1 EXAMPLES + +Read input from 'stdin' and write output to 'stdout'. + + dos2unix + dos2unix -l -c mac + +Convert and replace a.txt. Convert and replace b.txt. + + dos2unix a.txt b.txt + dos2unix -o a.txt b.txt + +Convert and replace a.txt in ascii conversion mode. + + dos2unix a.txt + +Convert and replace a.txt in ascii conversion mode. +Convert and replace b.txt in 7bit conversion mode. + + dos2unix a.txt -c 7bit b.txt + dos2unix -c ascii a.txt -c 7bit b.txt + dos2unix -ascii a.txt -7 b.txt + +Convert a.txt from Mac to Unix format. + + dos2unix -c mac a.txt + mac2unix a.txt + +Convert a.txt from Unix to Mac format. + + unix2dos -c mac a.txt + unix2mac a.txt + +Convert and replace a.txt while keeping original date stamp. + + dos2unix -k a.txt + dos2unix -k -o a.txt + +Convert a.txt and write to e.txt. + + dos2unix -n a.txt e.txt + +Convert a.txt and write to e.txt, keep date stamp of e.txt same as a.txt. + + dos2unix -k -n a.txt e.txt + +Convert and replace a.txt. Convert b.txt and write to e.txt. + + dos2unix a.txt -n b.txt e.txt + dos2unix -o a.txt -n b.txt e.txt + +Convert c.txt and write to e.txt. Convert and replace a.txt. +Convert and replace b.txt. Convert d.txt and write to f.txt. + + dos2unix -n c.txt e.txt -o a.txt b.txt -n d.txt f.txt + +=head1 RECURSIVE CONVERSION + +Use dos2unix in combination with the find(1) and xargs(1) commands to +recursively convert text files in a directory tree structure. For instance to +convert all .txt files in the directory tree under the current directory type: + + find . -name *.txt |xargs dos2unix + +=head1 LOCALIZATION + +=over 4 + +=item B<LANG> + +The primary language is selected with the environment variable LANG. The LANG +variable consists out of several parts. The first part is in small letters the +language code. The second is optional and is the country code in capital +letters, preceded with an underscore. There is also an optional third part: +character encoding, preceded with a dot. A few examples for POSIX standard type +shells: + + export LANG=nl Dutch + export LANG=nl_NL Dutch, The Netherlands + export LANG=nl_BE Dutch, Belgium + export LANG=es_ES Spanish, Spain + export LANG=es_MX Spanish, Mexico + export LANG=en_US.iso88591 English, USA, Latin-1 encoding + export LANG=en_GB.UTF-8 English, UK, UTF-8 encoding + +For a complete list of language and country codes see the gettext manual: +L<http://www.gnu.org/software/gettext/manual/gettext.html#Language-Codes> + +On Unix systems you can use to command locale(1) to get locale specific +information. + +=item B<LANGUAGE> + +With the LANGUAGE environment variable you can specify a priority list of +languages, separated by colons. Dos2unix gives preference to LANGUAGE over LANG. +For instance, first Dutch and then German: C<LANGUAGE=nl:de>. You have to first +enable localization, by setting LANG (or LC_ALL) to a value other than +"C", before you can use a language priority list through the LANGUAGE +variable. See also the gettext manual: +L<http://www.gnu.org/software/gettext/manual/gettext.html#The-LANGUAGE-variable> + +If you select a language which is not available you will get the +standard English messages. + + +=item B<DOS2UNIX_LOCALEDIR> + +With the environment variable DOS2UNIX_LOCALEDIR the LOCALEDIR set +during compilation can be overruled. LOCALEDIR is used to find the +language files. The GNU default value is C</usr/local/share/locale>. +Option B<--version> will display the LOCALEDIR that is used. + +Example (POSIX shell): + + export DOS2UNIX_LOCALEDIR=$HOME/share/locale + +=back + + +=head1 RETURN VALUE + +On success, zero is returned. When a system error occurs the last system error will be +returned. For other errors 1 is returned. + +The return value is always zero in quiet mode, except when wrong command-line options +are used. + +=head1 STANDARDS + +L<http://en.wikipedia.org/wiki/Text_file> + +L<http://en.wikipedia.org/wiki/Carriage_return> + +L<http://en.wikipedia.org/wiki/Newline> + +L<http://en.wikipedia.org/wiki/Unicode> + +=head1 AUTHORS + +Benjamin Lin - <blin@socs.uts.edu.au> +Bernd Johannes Wuebben (mac2unix mode) - <wuebben@kde.org>, +Christian Wurll (add extra newline) - <wurll@ira.uka.de>, +Erwin Waterlander - <waterlan@xs4all.nl> (Maintainer) + +Project page: L<http://waterlan.home.xs4all.nl/dos2unix.html> + +SourceForge page: L<http://sourceforge.net/projects/dos2unix/> + +Freecode: L<http://freecode.com/projects/dos2unix> + +=head1 SEE ALSO + +file(1) +find(1) +iconv(1) +locale(1) +xargs(1) + +=cut diff --git a/man/nl/man1/dos2unix.pod b/man/nl/man1/dos2unix.pod new file mode 100644 index 0000000..81b97dc --- /dev/null +++ b/man/nl/man1/dos2unix.pod @@ -0,0 +1,539 @@ +/* +# Copyright and License +# +# Copyright (C) 2009-2012 Erwin Waterlander +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice in the documentation and/or other materials provided with +# the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Description +# +# To learn what TOP LEVEL section to use in manual pages, +# see POSIX/Susv standard and "Utility Description Defaults" at +# http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap01.html#tag_01_11 +# +# This is manual page in Perl POD format. Read more at +# http://perldoc.perl.org/perlpod.html or run command: +# +# perldoc perlpod | less +# +# To check the syntax: +# +# podchecker *.pod +# +# Create manual page with command: +# +# pod2man PAGE.N.pod > PAGE.N +*/ +=pod + +=head1 NAAM + +dos2unix - DOS/Mac naar Unix en vice versa tekstbestand formaat omzetter + +=head1 OVERZICHT + + dos2unix [opties] [BESTAND ...] [-n INVOERBESTAND UITVOERBESTAND ...] + unix2dos [opties] [BESTAND ...] [-n INVOERBESTAND UITVOERBESTAND ...] + +=head1 BESCHRIJVING + +Het Dos2unix pakket bevat toepassingen C<dos2unix> en C<unix2dos> om +platte tekstbestanden in DOS of Mac formaat naar Unix om te zetten en +vice versa. + +In DOS/Windows tekstbestanden bestaat een regeleinde uit een combinatie van +twee tekens: een 'Carriage Return' (CR) gevolgd door een 'Line Feed' (LF). In +Unix tekstbestanden bestaat een regeleinde uit een enkel 'Newline' teken die +gelijk is aan een DOS 'Line Feed' (LF) teken. In Mac tekst bestanden, voor Mac +OS X, bestaan regeleindes uit een enkel 'Carriage Return' teken. Mac OS X is +Unix gebaseerd en heeft dezelfde regeleindes als Unix. + +Binaire bestanden worden automatisch overgeslagen, behalve als de omzetting +geforceerd wordt. + +Niet-reguliere bestanden, zoals mappen en FIFOs, worden automatisch overgeslagen. + +Symbolische koppelingen en hun doelen blijven standaard onaangeroerd. +Optioneel kunnen symbolische koppelingen worden vervangen, of de uitvoer +kan naar het doel van de symbolische koppeling worden geschreven. +Symbolische koppelingen op Windows worden niet ondersteund. Windows +symbolische koppelingen worden altijd vervangen, de doelen onaangeroerd +gelaten. + + +Dos2unix is gemodelleerd naar dos2unix onder SunOS/Solaris en heeft gelijke conversiemodi. + +=head1 OPTIES + +=over 4 + +=item B<--> + +Behandel alle volgende opties als bestandsnamen. Gebruik deze optie +als je bestanden wil converteren wiens naam met een streepje begint. +Bijvoorbeeld, om een bestand genaamd "-foo" om te zetten, gebruik je +de volgende opdracht: + + dos2unix -- -foo + +Of in nieuw-bestand-modus: + + dos2unix -n -- -foo uit.txt + +=item B<-ascii> + +Converteer alleen regeleindes. Dit is de standaard conversiemodus. + +=item B<-iso> + +Conversie tussen DOS en ISO-8859-1 lettertekenreeks. Zie ook paragraaf +CONVERSIEMODI. + +=item B<-1252> + +Gebruik Windows codetabel 1252 (West-Europees). + +=item B<-437> + +Gebruik DOS codetabel 437 (VS). Dit is de standaard codetabel die gebruikt wordt bij ISO conversie. + +=item B<-850> + +Gebruik DOS codetabel 850 (West-Europees). + +=item B<-860> + +Gebruik DOS codetabel 860 (Portugees). + +=item B<-863> + +Gebruik DOS codetabel 863 (Canadees Frans). + +=item B<-865> + +Gebruik DOS codetabel 865 (Scandinavisch). + +=item B<-7> + +Converteer 8 bit lettertekens naar 7 bit spatie. + +=item B<-c, --convmode CONVMODUS> + +Stel conversiemodus in. Waarbij CONVMODUS een is van: +I<ascii>, I<7bit>, I<iso>, I<mac> +met ascii als standaard instelling. + +=item B<-f, --force> + +Forceer omzetting van binaire bestanden. + +=item B<-h, --help> + +Laat help tekst zien. + +=item B<-k, --keepdate> + +Behoud de datum van het invoerbestand in het uitvoerbestand. + +=item B<-L, --license> + +Laat de software licentie zien. + +=item B<-l, --newline> + +Voeg een extra regeleinde toe. + +B<dos2unix>: Alleen DOS regeleindes worden omgezet naar twee Unix regeleindes. +In Mac modus worden alleen Mac regeleindes omgezet naar twee Unix regeleindes. + +B<unix2dos>: Aleen Unix regeleindes worden omgezet naar twee DOS regeleindes. +In Mac modus worden Unix regeleindes omgezet naar twee Mac regeleindes. + +=item B<-m, --add-bom> + +Schrijf een UTF-8 Byte Order Mark in het uitvoerbestand. Gebruik deze optie +nooit als de codering het van uitvoerbestand geen UTF-8 is. Zie ook paragraaf +UNICODE. + +=item B<-n, --newfile INVOERBESTAND UITVOERBESTAND ...> + +Nieuw-bestand-modus. Converteer bestand INVOERBESTAND en schrijf naar bestand +UITVOERBESTAND. Bestandsnamen moeten opgegeven worden in paren. Jokertekens +moeten NIET gebruikt worden, anders verlies je bestanden. + +=item B<-o, --oldfile BESTAND ...> + +Oud-bestand-modus. Converteer bestand BESTAND en overschrijf het. +Dit is de standaard modus. Jokertekens kunnen gebruikt worden. + +=item B<-q, --quiet> + +Stille werking. Onderdruk alle waarschuwingen. De teruggave waarde is nul. +Behalve wanneer verkeerde opties worden gegeven. + +=item B<-s, --safe> + +Sla binaire bestanden over (standaard). + +=item B<-F, --follow-symlink> + +Volg symbolische koppelingen en coverteer de doelen. + +=item B<-R, --replace-symlink> + +Vervang symbolische koppelingen door geconverteerde bestanden +(originele doelbestanden blijven ongewijzigd). + +=item B<-S, --skip-symlink> + +Laat symbolische koppelingen en doelen ongewijzigd (standaard). + +=item B<-V, --version> + +Laat versie informatie zien. + +=back + +=head1 MAC MODUS + +In normale modus worden DOS regeleindes naar Unix omgezet en vice versa. Mac regeleindes worden niet omgezet. + +In Mac modus worden Mac regeleindes naar Unix omgezet en vice versa. DOS regeleindes blijven ongewijzigd. + +Om in Mac modus te draaien gebruik de schakeloptie C<-c mac> of gebruik de opdrachten C<mac2unix> of C<unix2mac>. + +=head1 CONVERSIEMODI + +Conversie-modi I<ascii>, I<7bit>, en I<iso> +zijn gelijk aan die van dos2unix/unix2dos onder SunOS/Solaris. + +=over 4 + +=item B<ascii> + +In modus C<ascii> worden alleen regeleindes omgezet. Dit is de standaard modus. + +Hoewel de naam van deze modus ASCII is, wat een 7 bit standaard is, is de +werkelijke modus 8 bit. Gebruik altijd deze modus wanneer u Unicode UTF-8 +bestanden omzet. + +=item B<7bit> + +Alle 8 bit niet-ASCII lettertekens (met waardes van 128 t/m 255) worden +omgezet naar een 7 bit spatie. + +=item B<iso> + +Lettertekens worden omgezet tussen een DOS lettertekenreeks (codetabel) en ISO +lettertekenreeks ISO-8859-1 op Unix. DOS lettertekens zonder gelijkwaardig +ISO-8859-1 teken, waarvoor geen omzetting mogelijk is, worden omgezet in een +punt. Het zelfde geldt voor ISO-8859-1 tekens zonder DOS tegenhanger. + +Wanneer alleen optie C<-iso> gebruikt wordt, zal dos2unix proberen de actieve +codetabel te gebruiken. Als dat niet mogelijk is wordt codetabel CP437 +gebruikt, die met name in de VS gebruikt word. Om een bepaalde codetabel te +forceren gebruik opties C<-850> (West-Europees), C<-860> (Portugees), C<-863> +(Canadees Frans) of C<-865> (Scandinavisch). Windows codetabel CP1252 +(West-Europees) wordt ook ondersteund met optie C<-1252>. Gebruik voor andere +codetabellen dos2unix in combinatie met iconv(1). Iconv kan omzetten tussen een +lange lijst letterteken-coderingen. + +Gebruik ISO conversie nooit op Unicode tekst bestanden. Het zal UTF-8 +gecodeerde bestanden verminken. + +Enkele voorbeelden: + +Omzetten van DOS standaard codetabel naar Unix Latin-1 + + dos2unix -iso -n in.txt uit.txt + +Omzetten van DOS CP850 naar Unix Latin-1 + + dos2unix -850 -n in.txt uit.txt + +Omzetten van Windows CP1252 naar Unix Latin-1 + + dos2unix -1252 -n in.txt uit.txt + +Omzetten van Windows CP1252 naar Unix UTF-8 (Unicode) + + iconv -f CP1252 -t UTF-8 in.txt | dos2unix > uit.txt + +Omzetten van Unix Latin-1 naar DOS standaard code tabel + + unix2dos -iso -n in.txt uit.txt + +Omzetten van Unix Latin-1 naar DOS CP850 + + unix2dos -850 -n in.txt uit.txt + +Omzetten van Unix Latin-1 naar Windows CP1252 + + unix2dos -1252 -n in.txt uit.txt + +Omzetten van Unix UTF-8 (Unicode) naar Windows CP1252 + + unix2dos < in.txt | iconv -f UTF-8 -t CP1252 > uit.txt + +Zie ook L<http://czyborra.com/charsets/codepages.html> +en L<http://czyborra.com/charsets/iso8859.html>. + +=back + +=head1 UNICODE + +=head2 Coderingen + +Er bestaan verschillende Unicode coderingen. Op Unix en Linux zijn Unicode +bestanden typisch gecodeerd in UTF-8. Op Windows kunnen Unicode tekst bestanden +gecodeerd zijn in UTF-8, UTF-16 of UTF-16 big endian, maar meestal zijn ze +gecodeerd in UTF-16 formaat. + +=head2 Conversie + +Unicode tekst bestanden kunnen DOS, Unix of Mac regeleindes hebben, net +als reguliere tekst bestanden. + +Alle versies van dos2unix en unix2dos kunnen UTF-8 gecodeerde bestanden +omzetten, want UTF-8 is ontworpen op compatibiliteit met ASCII. + +Dos2unix en unix2dos met Unicode UTF-16 ondersteuning, kunnen little en big +endian UTF-16 gecodeerde tekst bestanden lezen. Om er achter te komen of +dos2unix gebouwd is met UTF-16 ondersteuning type C<dos2unix -V>. + +De Windows versies van dos2unix en unix2dos converteren UTF-16 gecodeerde +bestanden altijd naar UTF-8 gecondeerde bestanden. Unix versies van +dos2unix/unix2dos zetten UTF-16 gecodeerde bestanden om naar de lokale +karakter codering als die gelijk is aan UTF-8. Gebruik de opdracht +locale(1) om uit te vinden wat de lokale karakter codering is. + +Omdat UTF-8 geformateerde tekstbestanden zowel op Windows en Unix goed +ondersteund worden, hebben dos2unix en unix2dos geen optie om UTF-16 bestanden +te schrijven. Alle UTF-16 karakters kunnen worden omgezet naar UTF-8. De +omzetting van UTF-16 naar UTF-8 is verliesvrij. Op Unix worden UTF-16 bestanden +overgeslagen als de locale karakter codering ongelijk is aan UTF-8, om te +voorkomen dat er per ongeluk tekst verloren gaat. Wanneer een UTF-16 naar +UTF-8 conversiefout optreedt, bijvoorbeeld wanneer het UTF-16 invoerbestand +een fout bevat, wordt het bestand overgeslagen. + +ISO en 7-bit conversie werkt niet op UTF-16 bestanden. + +=head2 Byte Order Mark + +Op Windows hebben Unicode tekstbestanden typisch een Byte Order Mark (BOM), +omdat veel Windows programma's (inclusief Kladblok) standaard een BOM +toevoegen. Zie ook L<http://en.wikipedia.org/wiki/Byte_order_mark>. + +Op Unix hebben Unicode tekstbestanden typisch geen BOM. Er wordt aangenomen +dat de codering van tekstbestanden gelijk is aan de lokale karakter +codering. + +Dos2unix kan alleen detecteren of een bestand in UTF-16 formaat is als het +bestand een BOM heeft. Wanneer een UTF-16 bestand geen BOM heeft, ziet +dos2unix het bestand als een binair bestand. + +Gebruik dos2unix in combinatie met iconv(1) om een UTF-16 bestand zonder BOM om +te zetten. + +Dos2unix schrijft nooit een BOM in het uitvoerbestand, tenzij optie C<-m> +gebruikt wordt. + +Unix2dos schrijft een BOM in het uitvoerbestand wanneer het invoerbestand +een BOM heeft, of wanneer optie C<-m> gebruikt is. + +=head2 Unicode voorbeelden + +Omzetten van Windows UTF-16 (met BOM) naar Unix UTF-8 + + dos2unix -n in.txt uit.txt + +Omzetten van Windows UTF-16 (zonder BOM) naar Unix UTF-8 + + iconv -f UTF-16 -t UTF-8 in.txt | dos2unix > uit.txt + +Omzetten van Unix UTF-8 naar Windows UTF-8 met BOM + + unix2dos -m -n in.txt uit.txt + +Omzetten van Unix UTF-8 naar Windows UTF-16 + + unix2dos < in.txt | iconv -f UTF-8 -t UTF-16 > uit.txt + +=head1 VOORBEELDEN + +Lees invoer van 'stdin' en schrijf uitvoer naar 'stdout'. + + dos2unix + dos2unix -l -c mac + +Omzetten en vervangen a.txt. Omzetten en vervangen b.txt. + + dos2unix a.txt b.txt + dos2unix -o a.txt b.txt + +Omzetten en vervangen a.txt in ascii conversiemodus. + + dos2unix a.txt + +Omzetten en vervangen a.txt in ascii conversiemodus. +Omzetten en vervangen b.txt in 7bit conversiemodus. + + dos2unix a.txt -c 7bit b.txt + dos2unix -c ascii a.txt -c 7bit b.txt + dos2unix -ascii a.txt -7 b.txt + +Omzetten a.txt van Mac naar Unix format. + + dos2unix -c mac a.txt + mac2unix a.txt + +Omzetten a.txt van Unix naar Mac format. + + unix2dos -c mac a.txt + unix2mac a.txt + +Omzetten en vervangen a.txt met behoud van originele datum. + + dos2unix -k a.txt + dos2unix -k -o a.txt + +Omzetten a.txt en schrijf naar e.txt. + + dos2unix -n a.txt e.txt + +Omzetten a.txt en schrijf naar e.txt, behoud datum e.txt gelijk aan a.txt. + + dos2unix -k -n a.txt e.txt + +Omzetten en vervangen a.txt. Omzetten b.txt en schrijf naar e.txt. + + dos2unix a.txt -n b.txt e.txt + dos2unix -o a.txt -n b.txt e.txt + +Omzetten c.txt en schrijf naar e.txt. Omzetten en vervangen a.txt. +Omzetten en vervangen b.txt. Omzetten d.txt en schrijf naar f.txt. + + dos2unix -n c.txt e.txt -o a.txt b.txt -n d.txt f.txt + +=head1 RECURSIEVE CONVERSIE + +Gebruik dos2unix in combinatie met de find(1) en xargs(1) opdrachten om +tekstbestanden in een directoryboomstructuur recursief om te zetten. +Bijvoorbeeld om alle .txt bestanden in de directoryboom onder de huidige +map te converteren type: + + find . -name *.txt |xargs dos2unix + +=head1 LOKALISATIE + +=over 4 + +=item B<LANG> + +The primaire taal wordt geselecteerd met de omgevingsvariabele LANG. De LANG +variabele bestaat uit verschillende onderdelen. Het eerste deel is in kleine +letters de taalcode. Het tweede deel is optioneel en is de landcode in +hoofdletters, voorafgegaan door een laag streepje. Er is ook een optioneel +derde deel: lettertekenreeks-codering, voorafgegaan door een punt. Enkele voorbeelden +voor een POSIX staandaard shell: + + export LANG=nl Nederlands + export LANG=nl_NL Nederlands, Nederland + export LANG=nl_BE Nederlands, België + export LANG=es_ES Spaans, Spanje + export LANG=es_MX Spaans, Mexico + export LANG=en_US.iso88591 Engels, VS, Latin-1 codering + export LANG=en_GB.UTF-8 Engels, GB, UTF-8 codering + +Voor een complete lijst van taal- en landcodes zie de gettext handleiding: +L<http://www.gnu.org/software/gettext/manual/gettext.html#Language-Codes> + +Op Unix systemen kunt u de opdracht locale(1) gebruiken om specifieke +lokalisatie informatie te verkrijgen. + +=item B<LANGUAGE> + +Met de omgevingsvariabele LANGUAGE kunt u een prioriteitenlijst specificeren +van talen, gescheiden door dubbele punten. Dos2unix geeft voorkeur aan +LANGUAGE boven LANG. Bijvoorbeeld, eerst Nederlands en dan Duits: C<LANGUAGE=nl:de>. +U moet eerst lokalisatie in werking stellen, met het instellen van LANG (of LC_ALL) +in een waarde ongelijk aan "C", voordat u een talen prioriteitenlijst kunt +gebruiken via de LANGUAGE variabele. Zie ook de gettext handleiding: +L<http://www.gnu.org/software/gettext/manual/gettext.html#The-LANGUAGE-variable> + +Als u een taal kiest die niet beschikbaar is worden de standaard +Engelse berichten gebruikt. + +=item B<DOS2UNIX_LOCALEDIR> + +Met de omgevingsvariabele DOS2UNIX_LOCALEDIR kan de LOCALEDIR gebruikt tijdens +compilatie worden overstemd. LOCALEDIR wordt gebruikt om de taalbestanden te +vinden. De GNU staandaard waarde is C</usr/local/share/locale>. De optie "-V" +laat de gebruikte LOCALEDIR zien. + +Voorbeeld (POSIX shell): + + export DOS2UNIX_LOCALEDIR=$HOME/share/locale + +=back + +=head1 TERUGGAVE WAARDE + +Bij succes wordt nul terug gegeven. Wanneer een systeemfout optreedt wordt +het laatste systeemfoutnummer terug gegeven. Bij andere fouten wordt 1 terug gegeven. + +De teruggave is altijd nul in de modus stille werking, behalve wanneer verkeerde +opties worden gegeven. + +=head1 STANDAARDEN + +L<http://nl.wikipedia.org/wiki/Tekstbestand> + +L<http://nl.wikipedia.org/wiki/Carriage_Return> + +L<http://nl.wikipedia.org/wiki/Linefeed> + +L<http://nl.wikipedia.org/wiki/Unicode> + +=head1 AUTEURS + +Benjamin Lin - <blin@socs.uts.edu.au>, +Bernd Johannes Wuebben (mac2unix modus) - <wuebben@kde.org>, +Christian Wurll (voeg extra regeleinde toe) - <wurll@ira.uka.de>, +Erwin Waterlander - <waterlan@xs4all.nl> + +Project pagina: L<http://waterlan.home.xs4all.nl/dos2unix.html> + +SourceForge pagina: L<http://sourceforge.net/projects/dos2unix/> + +Freshmeat: L<http://freshmeat.net/projects/dos2unix> + +=head1 ZIE OOK + +file(1) +find(1) +iconv(1) +locale(1) +xargs(1) + +=cut diff --git a/mingw.mak b/mingw.mak new file mode 100644 index 0000000..bf030c2 --- /dev/null +++ b/mingw.mak @@ -0,0 +1,37 @@ +
+# Author: Erwin Waterlander
+# Copyright (C) 2009 Erwin Waterlander
+# This file is distributed under the same license as the dos2unix package.
+
+prefix=c:/usr/local
+ENABLE_NLS=1
+
+ifdef ENABLE_NLS
+LDFLAGS_EXTRA = -lintl -liconv
+# Using GnuWin32 gettext,iconv
+#ZIPOBJ_EXTRA = bin/libintl3.dll bin/libiconv2.dll
+# Using MinGW gettext,iconv
+ZIPOBJ_EXTRA = bin/libintl-8.dll bin/libiconv-2.dll
+endif
+
+all:
+ $(MAKE) all EXE=.exe ENABLE_NLS=$(ENABLE_NLS) LDFLAGS_EXTRA="$(LDFLAGS_EXTRA)" prefix=$(prefix) LINK="cp -f" EO_XNOTATION=1
+
+install:
+ $(MAKE) install EXE=.exe ENABLE_NLS=$(ENABLE_NLS) LDFLAGS_EXTRA="$(LDFLAGS_EXTRA)" prefix=$(prefix) LINK="cp -f" EO_XNOTATION=1
+
+uninstall:
+ $(MAKE) uninstall EXE=.exe prefix=$(prefix)
+
+clean:
+ $(MAKE) clean EXE=.exe ENABLE_NLS=$(ENABLE_NLS) prefix=$(prefix)
+
+mostlyclean:
+ $(MAKE) mostlyclean EXE=.exe ENABLE_NLS=$(ENABLE_NLS) prefix=$(prefix)
+
+dist:
+ $(MAKE) dist-zip EXE=.exe prefix=$(prefix) VERSIONSUFFIX="-win32" ZIPOBJ_EXTRA="${ZIPOBJ_EXTRA}" ENABLE_NLS=$(ENABLE_NLS)
+
+strip:
+ $(MAKE) strip LINK="cp -f" EXE=.exe
+
diff --git a/mingw64.mak b/mingw64.mak new file mode 100644 index 0000000..32f9e6a --- /dev/null +++ b/mingw64.mak @@ -0,0 +1,40 @@ +
+# Author: Erwin Waterlander
+# Copyright (C) 2012 Erwin Waterlander
+# This file is distributed under the same license as the dos2unix package.
+
+CC = x86_64-w64-mingw32-gcc
+STRIP = x86_64-w64-mingw32-strip
+CRT_GLOB_OBJ = C:/mingw64/mingw/lib/CRT_glob.o
+
+prefix=c:/usr/local64
+ENABLE_NLS=
+
+ifdef ENABLE_NLS
+LDFLAGS_EXTRA = -lintl -liconv
+# Using MinGW gettext,iconv
+#ZIPOBJ_EXTRA = bin/libintl-8.dll bin/libiconv-2.dll
+endif
+LDFLAGS_EXTRA += $(CRT_GLOB_OBJ)
+
+all:
+ $(MAKE) all EXE=.exe ENABLE_NLS=$(ENABLE_NLS) LDFLAGS_EXTRA="$(LDFLAGS_EXTRA)" prefix=$(prefix) LINK="cp -f" CC=$(CC) EO_XNOTATION=1
+
+install:
+ $(MAKE) install EXE=.exe ENABLE_NLS=$(ENABLE_NLS) LDFLAGS_EXTRA="$(LDFLAGS_EXTRA)" prefix=$(prefix) LINK="cp -f" CC=$(CC) EO_XNOTATION=1
+
+uninstall:
+ $(MAKE) uninstall EXE=.exe prefix=$(prefix)
+
+clean:
+ $(MAKE) clean EXE=.exe ENABLE_NLS=$(ENABLE_NLS) prefix=$(prefix)
+
+mostlyclean:
+ $(MAKE) mostlyclean EXE=.exe ENABLE_NLS=$(ENABLE_NLS) prefix=$(prefix)
+
+dist:
+ $(MAKE) dist-zip EXE=.exe prefix=$(prefix) VERSIONSUFFIX="-win64" ZIPOBJ_EXTRA="${ZIPOBJ_EXTRA}" ENABLE_NLS=$(ENABLE_NLS)
+
+strip:
+ $(MAKE) strip LINK="cp -f" EXE=.exe STRIP=$(STRIP)
+
@@ -0,0 +1,35 @@ +
+# Author: Erwin Waterlander
+# Copyright (C) 2009-2012 Erwin Waterlander
+# This file is distributed under the same license as the dos2unix package.
+
+prefix=c:/usr
+ENABLE_NLS=1
+LDFLAGS_EXTRA = -Zargs-wild
+
+ifdef ENABLE_NLS
+LDFLAGS_EXTRA += -lintl -liconv
+endif
+ZIPOBJ_EXTRA =
+
+all:
+ $(MAKE) all EXE=.exe ENABLE_NLS=$(ENABLE_NLS) LDFLAGS_EXTRA="$(LDFLAGS_EXTRA)" prefix=$(prefix) LINK="cp -f" EO_XNOTATION=1 UCS=
+
+install:
+ $(MAKE) install EXE=.exe ENABLE_NLS=$(ENABLE_NLS) LDFLAGS_EXTRA="$(LDFLAGS_EXTRA)" prefix=$(prefix) LINK="cp -f" EO_XNOTATION=1 UCS=
+
+uninstall:
+ $(MAKE) uninstall EXE=.exe prefix=$(prefix)
+
+clean:
+ $(MAKE) clean EXE=.exe ENABLE_NLS=$(ENABLE_NLS) prefix=$(prefix)
+
+mostlyclean:
+ $(MAKE) mostlyclean EXE=.exe ENABLE_NLS=$(ENABLE_NLS) prefix=$(prefix)
+
+dist:
+ $(MAKE) dist-zip EXE=.exe prefix=$(prefix) VERSIONSUFFIX="-os2" ZIPOBJ_EXTRA="${ZIPOBJ_EXTRA}" ENABLE_NLS=$(ENABLE_NLS)
+
+strip:
+ $(MAKE) strip LINK="cp -f" EXE=.exe
+
diff --git a/po/de.po b/po/de.po new file mode 100644 index 0000000..0c8e9d8 --- /dev/null +++ b/po/de.po @@ -0,0 +1,411 @@ +# German messages for dos2unix +# Copyright (C) 2009-2012 +# This file is distributed under the same license as the dos2unix package. +# +# Philipp Thomas <pth@suse.de>, 2009, 2010, 2011. +# Philipp Thomas <psmt@opensuse.org>, 2009,2010, 2011. +msgid "" +msgstr "" +"Project-Id-Version: dos2unix 5.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-03-30 09:25+0200\n" +"PO-Revision-Date: 2010-01-24 09:00+0100\n" +"Last-Translator: Philipp Thomas <psmt@opensuse.org>\n" +"Language-Team: German <translation-team-de@lists.sourceforge.net>\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.0\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: dos2unix.c:76 +msgid "" +"Copyright (C) 2009-2012 Erwin Waterlander\n" +"Copyright (C) 1998 Christian Wurll (Version 3.1)\n" +"Copyright (C) 1998 Bernd Johannes Wuebben (Version 3.0)\n" +"Copyright (C) 1994-1995 Benjamin Lin\n" +"All rights reserved.\n" +"\n" +msgstr "" +"Copyright © 2009-2012 Erwin Waterlander\n" +"Copyright © 1998 Christian Wurll (Version 3.1)\n" +"Copyright © 1998 Bernd Johannes Wuebben (Version 3.0)\n" +"Copyright © 1994,1995 Benjamin Lin\n" +"Alle Rechte vorbehalten.\n" +"\n" + +#: dos2unix.c:169 dos2unix.c:200 dos2unix.c:224 dos2unix.c:323 dos2unix.c:351 +#: dos2unix.c:372 unix2dos.c:152 unix2dos.c:183 unix2dos.c:202 unix2dos.c:219 +#: unix2dos.c:331 unix2dos.c:359 unix2dos.c:375 unix2dos.c:389 +msgid "can not write to output file\n" +msgstr "In die Ausgabedatei kann nicht geschrieben werden\n" + +#: dos2unix.c:239 dos2unix.c:386 unix2dos.c:234 unix2dos.c:403 +#, c-format +msgid "program error, invalid conversion mode %d\n" +msgstr "Programmfehler, der Konvertierungsmodus %d ist unzulässig\n" + +#: dos2unix.c:293 unix2dos.c:288 +#, c-format +msgid "using code page %d.\n" +msgstr "Codepage %d wird verwendet.\n" + +#: dos2unix.c:474 unix2dos.c:491 +#, c-format +msgid "Failed to open temporary output file: %s\n" +msgstr "Die temporäre Ausgabedatei konnte nicht geöffnet werden: %s\n" + +#: dos2unix.c:481 unix2dos.c:498 +#, c-format +msgid "using %s as temporary file\n" +msgstr "%s wird als temporäre Datei verwendet\n" + +#: dos2unix.c:610 unix2dos.c:627 +#, c-format +msgid "Failed to change the permissions of temporary output file %s: %s\n" +msgstr "Das Ändern der Rechte der temporären Ausgabedatei %s scheiterte: %s\n" + +#: dos2unix.c:629 unix2dos.c:646 +#, c-format +msgid "Failed to change the owner and group of temporary output file %s: %s\n" +msgstr "" +"Das Ändern des Eigentümers und der Gruppe der temporären Ausgabedatei %s " +"scheiterte: %s\n" + +#: dos2unix.c:682 unix2dos.c:699 +#, c-format +msgid "problems resolving symbolic link '%s'\n" +msgstr "es gab Probleme beim Auflösen der symbolischen Verknüpfung »%s«\n" + +#: dos2unix.c:683 dos2unix.c:717 unix2dos.c:700 unix2dos.c:734 +#, c-format +msgid " output file remains in '%s'\n" +msgstr " Die Ausgabedatei verbleibt in »%s«\n" + +#: dos2unix.c:712 unix2dos.c:729 +#, c-format +msgid "problems renaming '%s' to '%s': %s\n" +msgstr "Beim Umbenennen von »%s« zu »%s« sind Probleme aufgetreten: %s\n" + +#: dos2unix.c:715 unix2dos.c:732 +#, c-format +msgid " which is the target of symbolic link '%s'\n" +msgstr " welche das Ziel der symbolischen Verknüpfung »%s« ist\n" + +#: dos2unix.c:807 unix2dos.c:824 +msgid "error: Value of environment variable DOS2UNIX_LOCALEDIR is too long.\n" +msgstr "" +"Fehler: Der Inhalt der Umgebungsvariablen DOS2UNIX_LOCALEDIR ist zu lang.\n" + +#: dos2unix.c:904 dos2unix.c:935 unix2dos.c:921 unix2dos.c:952 +#, c-format +msgid "active code page: %d\n" +msgstr "aktive Codepage: %d\n" + +#: dos2unix.c:945 unix2dos.c:962 +#, c-format +msgid "invalid %s conversion mode specified\n" +msgstr "Der angegebene Konvertierungsmodus %s ist unzulässig\n" + +#: dos2unix.c:955 unix2dos.c:972 +#, c-format +msgid "option '%s' requires an argument\n" +msgstr "Die Option »%s« benötigt ein Argument\n" + +#: dos2unix.c:968 dos2unix.c:982 dos2unix.c:1176 unix2dos.c:985 unix2dos.c:999 +#: unix2dos.c:1199 +#, c-format +msgid "target of file %s not specified in new file mode\n" +msgstr "Das Ziel der Datei %s wurde für den Neudatei-Modus nicht angegeben\n" + +#: dos2unix.c:1012 dos2unix.c:1096 unix2dos.c:1029 unix2dos.c:1116 +#, c-format +msgid "Skipping %s, not a regular file.\n" +msgstr "%s wird übersprungen, da es keine reguläre Datei ist\n" + +#: dos2unix.c:1019 unix2dos.c:1036 +#, c-format +msgid "Skipping %s, output file %s is a symbolic link.\n" +msgstr "" +"%s wird übersprungen, Ausgabedatei %s ist eine symbolische Verknüpfung.\n" + +#: dos2unix.c:1026 dos2unix.c:1110 unix2dos.c:1043 unix2dos.c:1130 +#, c-format +msgid "Skipping symbolic link %s, target is not a regular file.\n" +msgstr "" +"Symbolische Verknüpfung %s wird übersprungen da das Ziel keine reguläre " +"Datei ist.\n" + +#: dos2unix.c:1033 unix2dos.c:1050 +#, c-format +msgid "Skipping %s, target of symbolic link %s is not a regular file.\n" +msgstr "" +"%s wird übersprungen, das Ziel der symbolischen Verknüpfung %s ist keine " +"reguläre Datei.\n" + +#: dos2unix.c:1040 dos2unix.c:1117 unix2dos.c:1057 unix2dos.c:1137 +#, c-format +msgid "Skipping binary file %s\n" +msgstr "binäre Datei %s wird übersprungen\n" + +#: dos2unix.c:1047 dos2unix.c:1124 unix2dos.c:1064 unix2dos.c:1144 +#, c-format +msgid "code page %d is not supported.\n" +msgstr "Codepage %d wird nicht unterstützt.\n" + +#: dos2unix.c:1054 dos2unix.c:1131 unix2dos.c:1071 unix2dos.c:1151 +#, c-format +msgid "" +"Skipping UTF-16 file %s, the current locale character encoding is not " +"UTF-8.\n" +msgstr "UTF-16 Datei %s wird übersprungen, da die derzeitige Zeichenkodierung nicht UTF-8 ist.\n" + +#: dos2unix.c:1061 dos2unix.c:1138 unix2dos.c:1078 unix2dos.c:1158 +#, c-format +msgid "Skipping UTF-16 file %s, the size of wchar_t is %d bytes.\n" +msgstr "UTF-16 Datei %s wird übersprungen, da wchar_t %d Bytes groß ist.\n" + +#: dos2unix.c:1068 dos2unix.c:1145 unix2dos.c:1085 unix2dos.c:1165 +#, c-format +msgid "Skipping UTF-16 file %s, an UTF-16 conversion error occurred.\n" +msgstr "UTF-16 Datei %s wird übersprungen, da beim Umwandeln ein Fehler auftrat.\n" + +#: dos2unix.c:1074 +#, c-format +msgid "converting file %s to file %s in Unix format ...\n" +msgstr "Datei %s wird zu Datei %s im Unix-Format umgewandelt ...\n" + +#: dos2unix.c:1081 unix2dos.c:1101 +#, c-format +msgid "problems converting file %s to file %s\n" +msgstr "Beim Konvertieren von Datei %s zu Datei %s sind Probleme aufgetreten\n" + +#: dos2unix.c:1103 unix2dos.c:1123 +#, c-format +msgid "Skipping symbolic link %s.\n" +msgstr "Symbolische Verknüpfung %s wird übersprungen.\n" + +#: dos2unix.c:1151 +#, c-format +msgid "converting file %s to Unix format ...\n" +msgstr "Datei %s wird ins Unix-Format umgewandelt ...\n" + +#: dos2unix.c:1158 unix2dos.c:1181 +#, c-format +msgid "problems converting file %s\n" +msgstr "Beim Umwandeln von Datei %s sind Probleme aufgetreten\n" + +#: unix2dos.c:66 +msgid "" +"Copyright (C) 2009-2012 Erwin Waterlander\n" +"Copyright (C) 1994-1995 Benjamin Lin\n" +"All rights reserved.\n" +"\n" +msgstr "" +"Copyright © 2009-2012 Erwin Waterlander\n" +"Copyright © 1994,1995 Benjamin Lin\n" +"Alle Rechte vorbehalten.\n" +"\n" + +#: unix2dos.c:1092 +#, c-format +msgid "converting file %s to file %s in Mac format ...\n" +msgstr "Datei %s wird in Datei %s im Mac-Format konvertiert ...\n" + +#: unix2dos.c:1094 +#, c-format +msgid "converting file %s to file %s in DOS format ...\n" +msgstr "Datei %s wird in Datei %s im DOS-Format konvertiert ...\n" + +#: unix2dos.c:1172 +#, c-format +msgid "converting file %s to Mac format ...\n" +msgstr "Datei %s wird ins Mac-Format konvertiert ...\n" + +#: unix2dos.c:1174 +#, c-format +msgid "converting file %s to DOS format ...\n" +msgstr "Datei %s wird ins DOS-Format konvertiert ...\n" + +#: common.c:167 +msgid "" +"Redistribution and use in source and binary forms, with or without\n" +"modification, are permitted provided that the following conditions\n" +"are met:\n" +"1. Redistributions of source code must retain the above copyright\n" +" notice, this list of conditions and the following disclaimer.\n" +"2. Redistributions in binary form must reproduce the above copyright\n" +" notice in the documentation and/or other materials provided with\n" +" the distribution.\n" +"\n" +"THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY\n" +"EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n" +"IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" +"PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE\n" +"FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n" +"CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n" +"OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n" +"BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n" +"WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n" +"OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN\n" +"IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" +msgstr "" +"Verbreitung und Verwendung als Quelltext oder Binärdatei, in geänderter\n" +"oder ungeänderter Form sind gestattet, soweit die folgenden Bedingungen\n" +"eingehalten werden:\n" +"1. Weiterverbreitung des Quellcodes muss den obigen Copyrightshinweis,\n" +" Diese Liste von Bedingungen sowie den folgenden Haftungsausschlus\n" +" beibehalten.\n" +"2. Weiterverbreitung in binärer Form muss den obigen Copyright-Hinweis\n" +" in der Dokumentation oder anderem der Distribution beiliegenden\n" +" Material wiedergeben.\n" +"\n" +"DIESE SOFTWARE WIRD VOM AUTHOR WIE VORLIEGT ZUR VERFÃœGUNG GESTELLT\n" +"UND JEGLICHE AUSDRÃœCKLICH GENANNTEN ODER IMPLIZITEN GARANTIEN,\n" +"EINSCHLIESLICH, ABER NICHT DARAUF BESCHRÄNKT, DER GARANTIE DER\n" +"HANDELBARKEIT UND DER EIGNUNG FÃœR EINEN BESTIMMTEN ZWECK WERDEN\n" +"HIERMIT AUSGESCHLOSSEN. IN KEINEM WIE AUCH IMMER GELAGERTEN FALL KANN\n" +"DER AUTHOR FÃœR IRGENDWELCHE DIREKTEN ODER INDIREKTEN, ZUFÄLLIGEN,\n" +"BESONDEREN ODER BEISPIELHAFTEN SCHÄDEN (EINSCHLIESSLICH ABER NICHT\n" +"AUSSCHLIESSLICH DER LIEFERUNG VON ERSATZGÃœTERN ODER DIENSTEN;VERLUST\n" +"DER NUTZBARKEIT, DER DATEN ODER DER GEWINNE ODER ETWAIGEN VERDIENST-\n" +"AUSFALL-ENTSCHÄDIGUNGEN) HAFTBAR GEMACHT WERDEN, WIE AUCH IMMER SIE\n" +"VERURSACHT WURDEN UND WELCHE HAFTUNGSMÖGLICHKEIT ZUGRUNDE GELEGT WIRD,\n" +"SEI ES DURCH VERTRAG, VERBINDLICHKEIT ODER SCHADEN (EINSCHLIESSLICH\n" +"FAHRLÄSSIGKEIT), DIE AUS DER VERWENDUNG DIESER SOFTWARE ERWÄCHST,\n" +"SELBST WENN AUF DIE MÖGLICHKIET SOLCHER SCHÄDEN HINGEWIESEN WURDE.\n" + +#: common.c:193 +#, c-format +msgid "" +"%s %s (%s)\n" +"Usage: %s [options] [file ...] [-n infile outfile ...]\n" +" -ascii convert only line breaks (default)\n" +" -iso conversion between DOS and ISO-8859-1 character set\n" +" -1252 Use Windows code page 1252 (Western European)\n" +" -437 Use DOS code page 437 (US) (default)\n" +" -850 Use DOS code page 850 (Western European)\n" +" -860 Use DOS code page 860 (Portuguese)\n" +" -863 Use DOS code page 863 (French Canadian)\n" +" -865 Use DOS code page 865 (Nordic)\n" +" -7 Convert 8 bit characters to 7 bit space\n" +" -c, --convmode conversion mode\n" +" convmode ascii, 7bit, iso, mac, default to ascii\n" +" -f, --force force conversion of binary files\n" +" -h, --help give this help\n" +" -k, --keepdate keep output file date\n" +" -L, --license display software license\n" +" -l, --newline add additional newline\n" +" -m, --add-bom add UTF-8 Byte Order Mark\n" +" -n, --newfile write to new file\n" +" infile original file in new file mode\n" +" outfile output file in new file mode\n" +" -o, --oldfile write to old file\n" +" file ... files to convert in old file mode\n" +" -q, --quiet quiet mode, suppress all warnings\n" +" always on in stdio mode\n" +" -s, --safe skip binary files (default)\n" +msgstr "" +"%s %s (%s)\n" +"Aufruf: %s [Optionen] [Datei ...] [-n Eingabedatei Ausgabedatei ...]\n" +" -ascii nur Zeilenumbrüche konvertieren (Vorgabe)\n" +" -iso Konvertierung zwischen DOS und ISO-8859-1 " +"Zeichensatz\n" +" -1252 Windows Codepage 1252 verwenden (Westeuropäisch)\n" +" -437 DOS Codepage 437 verwenden (US) (Vorgabe)\n" +" -850 DOS Codepage 850 verwenden (Westeuropäisch)\n" +" -860 DOS Codepage 860 verwenden (Portugiesisch)\n" +" -863 DOS Codepage 863 verwenden (Kanadisches Französisch)\n" +" -865 DOS Codepage 865 verwenden (Nordisch)\n" +" -7 8Bit Zeichen in solche aus dem 7Bit Raum " +"konvertieren\n" +" -c, --convmode Konvertierungsmodus angeben\n" +" convmode ascii, 7bit, iso, mac, Standard ist nach ascii\n" +" -f, --force erzwingt die Umwandlung binärer Dateien\n" +" -h, --help gibt diese Hilfe\n" +" -k, --keepdate Datum der Ausgabedatei bleibt erhalten\n" +" -L, --license Ausgabe der Software-Lizenz\n" +" -l, --newline fügt einen Zeilenumbruch hinzu\n" +" -m, --add-bom UTF-8 Byte Order Mark hinzufügen\n" +" -n, --newfile eine neue Datei wird erzeugt\n" +" Eingabedatei Originaldatei im neue Datei Modus\n" +" Ausgabedatei Ausgabedatei im neue Datei Modus\n" +" -o, --oldfile überschreibt die alte Datei\n" +" Datei ... Die im alte Datei Modus zu konvertierenden Dateien\n" +" -q, --quiet ruhiger Modus, unterdrückt alle Warnungen\n" +" ist im stdio Modus immer aktiv\n" +" -s, --safe überspringt binäre Dateien (Vorgabe)\n" + +#: common.c:223 +#, c-format +msgid "" +" -F, --follow-symlink follow symbolic links and convert the targets\n" +" -R, --replace-symlink replace symbolic links with converted files\n" +" (original target files remain unchanged)\n" +" -S, --skip-symlink keep symbolic links and targets unchanged (default)\n" +msgstr "" +" -F, --follow-symlink folgt symbolischen Verknüpfungen und wandelt die " +"Ziele um\n" +" -R, --replace-symlink ersetzt symbolische Verknüpfungen durch die " +"umgewandelten\n" +" Dateien (die Originale Ziele bleiben unangetastet)\n" +" -S, --skip-symlink symbolische Verknüpfungen und deren Ziele bleiben\n" +" unangetastet (Vorgabe)\n" + +#: common.c:229 +#, c-format +msgid " -V, --version display version number\n" +msgstr " -V, --version gibt die Versionsnummer aus\n" + +#: common.c:241 +msgid "DOS 16 bit version (WATCOMC).\n" +msgstr "DOS 16 bit Version (WATCOMC).\n" + +#: common.c:243 +msgid "DOS 16 bit version (TURBOC).\n" +msgstr "DOS 16 bit Version (TURBOC).\n" + +#: common.c:245 +msgid "DOS 32 bit version (WATCOMC).\n" +msgstr "DOS 32 bit Version (WATCOMC).\n" + +#: common.c:247 +msgid "DOS 32 bit version (DJGPP).\n" +msgstr "DOS 32 bit Version (DJGPP).\n" + +#: common.c:249 +msgid "MSYS version.\n" +msgstr "MSYS Version.\n" + +#: common.c:251 +msgid "Cygwin version.\n" +msgstr "Cygwin Version.\n" + +#: common.c:253 +msgid "Windows 64 bit version (MinGW-w64).\n" +msgstr "Windows 64 bit Version (MinGW-w64).\n" + +#: common.c:255 +msgid "Windows 32 bit version (WATCOMC).\n" +msgstr "Windows 32 bit Version (WATCOMC).\n" + +#: common.c:257 +msgid "Windows 32 bit version (MinGW).\n" +msgstr "Windows 32 bit Version (MinGW).\n" + +#: common.c:259 +msgid "OS/2 version.\n" +msgstr "OS/2 Version.\n" + +#: common.c:262 +msgid "With Unicode UTF-16 support.\n" +msgstr "Mit Unterstützung für Unicode UTF-16.\n" + +#: common.c:264 +msgid "Without Unicode UTF-16 support.\n" +msgstr "Ohne Unterstützung für Unicode UTF-16.\n" + +#: common.c:267 +msgid "With native language support.\n" +msgstr "Mit Unterstützung von Landessprachen.\n" diff --git a/po/dos2unix.pot b/po/dos2unix.pot new file mode 100644 index 0000000..be5427c --- /dev/null +++ b/po/dos2unix.pot @@ -0,0 +1,331 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-05-06 12:13+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: dos2unix.c:76 +msgid "" +"Copyright (C) 2009-2012 Erwin Waterlander\n" +"Copyright (C) 1998 Christian Wurll (Version 3.1)\n" +"Copyright (C) 1998 Bernd Johannes Wuebben (Version 3.0)\n" +"Copyright (C) 1994-1995 Benjamin Lin\n" +"All rights reserved.\n" +"\n" +msgstr "" + +#: dos2unix.c:169 dos2unix.c:200 dos2unix.c:224 dos2unix.c:323 dos2unix.c:351 +#: dos2unix.c:372 unix2dos.c:152 unix2dos.c:183 unix2dos.c:202 unix2dos.c:219 +#: unix2dos.c:331 unix2dos.c:359 unix2dos.c:375 unix2dos.c:389 +msgid "can not write to output file\n" +msgstr "" + +#: dos2unix.c:239 dos2unix.c:386 unix2dos.c:234 unix2dos.c:403 +#, c-format +msgid "program error, invalid conversion mode %d\n" +msgstr "" + +#: dos2unix.c:293 unix2dos.c:288 +#, c-format +msgid "using code page %d.\n" +msgstr "" + +#: dos2unix.c:474 unix2dos.c:491 +#, c-format +msgid "Failed to open temporary output file: %s\n" +msgstr "" + +#: dos2unix.c:481 unix2dos.c:498 +#, c-format +msgid "using %s as temporary file\n" +msgstr "" + +#: dos2unix.c:610 unix2dos.c:627 +#, c-format +msgid "Failed to change the permissions of temporary output file %s: %s\n" +msgstr "" + +#: dos2unix.c:629 unix2dos.c:646 +#, c-format +msgid "Failed to change the owner and group of temporary output file %s: %s\n" +msgstr "" + +#: dos2unix.c:682 unix2dos.c:699 +#, c-format +msgid "problems resolving symbolic link '%s'\n" +msgstr "" + +#: dos2unix.c:683 dos2unix.c:717 unix2dos.c:700 unix2dos.c:734 +#, c-format +msgid " output file remains in '%s'\n" +msgstr "" + +#: dos2unix.c:712 unix2dos.c:729 +#, c-format +msgid "problems renaming '%s' to '%s': %s\n" +msgstr "" + +#: dos2unix.c:715 unix2dos.c:732 +#, c-format +msgid " which is the target of symbolic link '%s'\n" +msgstr "" + +#: dos2unix.c:807 unix2dos.c:824 +msgid "error: Value of environment variable DOS2UNIX_LOCALEDIR is too long.\n" +msgstr "" + +#: dos2unix.c:904 dos2unix.c:935 unix2dos.c:921 unix2dos.c:952 +#, c-format +msgid "active code page: %d\n" +msgstr "" + +#: dos2unix.c:945 unix2dos.c:962 +#, c-format +msgid "invalid %s conversion mode specified\n" +msgstr "" + +#: dos2unix.c:955 unix2dos.c:972 +#, c-format +msgid "option '%s' requires an argument\n" +msgstr "" + +#: dos2unix.c:968 dos2unix.c:982 dos2unix.c:1176 unix2dos.c:985 unix2dos.c:999 +#: unix2dos.c:1199 +#, c-format +msgid "target of file %s not specified in new file mode\n" +msgstr "" + +#: dos2unix.c:1012 dos2unix.c:1096 unix2dos.c:1029 unix2dos.c:1116 +#, c-format +msgid "Skipping %s, not a regular file.\n" +msgstr "" + +#: dos2unix.c:1019 unix2dos.c:1036 +#, c-format +msgid "Skipping %s, output file %s is a symbolic link.\n" +msgstr "" + +#: dos2unix.c:1026 dos2unix.c:1110 unix2dos.c:1043 unix2dos.c:1130 +#, c-format +msgid "Skipping symbolic link %s, target is not a regular file.\n" +msgstr "" + +#: dos2unix.c:1033 unix2dos.c:1050 +#, c-format +msgid "Skipping %s, target of symbolic link %s is not a regular file.\n" +msgstr "" + +#: dos2unix.c:1040 dos2unix.c:1117 unix2dos.c:1057 unix2dos.c:1137 +#, c-format +msgid "Skipping binary file %s\n" +msgstr "" + +#: dos2unix.c:1047 dos2unix.c:1124 unix2dos.c:1064 unix2dos.c:1144 +#, c-format +msgid "code page %d is not supported.\n" +msgstr "" + +#: dos2unix.c:1054 dos2unix.c:1131 unix2dos.c:1071 unix2dos.c:1151 +#, c-format +msgid "" +"Skipping UTF-16 file %s, the current locale character encoding is not " +"UTF-8.\n" +msgstr "" + +#: dos2unix.c:1061 dos2unix.c:1138 unix2dos.c:1078 unix2dos.c:1158 +#, c-format +msgid "Skipping UTF-16 file %s, the size of wchar_t is %d bytes.\n" +msgstr "" + +#: dos2unix.c:1068 dos2unix.c:1145 unix2dos.c:1085 unix2dos.c:1165 +#, c-format +msgid "Skipping UTF-16 file %s, an UTF-16 conversion error occurred.\n" +msgstr "" + +#: dos2unix.c:1074 +#, c-format +msgid "converting file %s to file %s in Unix format ...\n" +msgstr "" + +#: dos2unix.c:1081 unix2dos.c:1101 +#, c-format +msgid "problems converting file %s to file %s\n" +msgstr "" + +#: dos2unix.c:1103 unix2dos.c:1123 +#, c-format +msgid "Skipping symbolic link %s.\n" +msgstr "" + +#: dos2unix.c:1151 +#, c-format +msgid "converting file %s to Unix format ...\n" +msgstr "" + +#: dos2unix.c:1158 unix2dos.c:1181 +#, c-format +msgid "problems converting file %s\n" +msgstr "" + +#: unix2dos.c:66 +msgid "" +"Copyright (C) 2009-2012 Erwin Waterlander\n" +"Copyright (C) 1994-1995 Benjamin Lin\n" +"All rights reserved.\n" +"\n" +msgstr "" + +#: unix2dos.c:1092 +#, c-format +msgid "converting file %s to file %s in Mac format ...\n" +msgstr "" + +#: unix2dos.c:1094 +#, c-format +msgid "converting file %s to file %s in DOS format ...\n" +msgstr "" + +#: unix2dos.c:1172 +#, c-format +msgid "converting file %s to Mac format ...\n" +msgstr "" + +#: unix2dos.c:1174 +#, c-format +msgid "converting file %s to DOS format ...\n" +msgstr "" + +#: common.c:167 +msgid "" +"Redistribution and use in source and binary forms, with or without\n" +"modification, are permitted provided that the following conditions\n" +"are met:\n" +"1. Redistributions of source code must retain the above copyright\n" +" notice, this list of conditions and the following disclaimer.\n" +"2. Redistributions in binary form must reproduce the above copyright\n" +" notice in the documentation and/or other materials provided with\n" +" the distribution.\n" +"\n" +"THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY\n" +"EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n" +"IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" +"PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE\n" +"FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n" +"CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n" +"OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n" +"BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n" +"WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n" +"OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN\n" +"IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" +msgstr "" + +#: common.c:193 +#, c-format +msgid "" +"%s %s (%s)\n" +"Usage: %s [options] [file ...] [-n infile outfile ...]\n" +" -ascii convert only line breaks (default)\n" +" -iso conversion between DOS and ISO-8859-1 character set\n" +" -1252 Use Windows code page 1252 (Western European)\n" +" -437 Use DOS code page 437 (US) (default)\n" +" -850 Use DOS code page 850 (Western European)\n" +" -860 Use DOS code page 860 (Portuguese)\n" +" -863 Use DOS code page 863 (French Canadian)\n" +" -865 Use DOS code page 865 (Nordic)\n" +" -7 Convert 8 bit characters to 7 bit space\n" +" -c, --convmode conversion mode\n" +" convmode ascii, 7bit, iso, mac, default to ascii\n" +" -f, --force force conversion of binary files\n" +" -h, --help give this help\n" +" -k, --keepdate keep output file date\n" +" -L, --license display software license\n" +" -l, --newline add additional newline\n" +" -m, --add-bom add UTF-8 Byte Order Mark\n" +" -n, --newfile write to new file\n" +" infile original file in new file mode\n" +" outfile output file in new file mode\n" +" -o, --oldfile write to old file\n" +" file ... files to convert in old file mode\n" +" -q, --quiet quiet mode, suppress all warnings\n" +" always on in stdio mode\n" +" -s, --safe skip binary files (default)\n" +msgstr "" + +#: common.c:223 +#, c-format +msgid "" +" -F, --follow-symlink follow symbolic links and convert the targets\n" +" -R, --replace-symlink replace symbolic links with converted files\n" +" (original target files remain unchanged)\n" +" -S, --skip-symlink keep symbolic links and targets unchanged (default)\n" +msgstr "" + +#: common.c:229 +#, c-format +msgid " -V, --version display version number\n" +msgstr "" + +#: common.c:241 +msgid "DOS 16 bit version (WATCOMC).\n" +msgstr "" + +#: common.c:243 +msgid "DOS 16 bit version (TURBOC).\n" +msgstr "" + +#: common.c:245 +msgid "DOS 32 bit version (WATCOMC).\n" +msgstr "" + +#: common.c:247 +msgid "DOS 32 bit version (DJGPP).\n" +msgstr "" + +#: common.c:249 +msgid "MSYS version.\n" +msgstr "" + +#: common.c:251 +msgid "Cygwin version.\n" +msgstr "" + +#: common.c:253 +msgid "Windows 64 bit version (MinGW-w64).\n" +msgstr "" + +#: common.c:255 +msgid "Windows 32 bit version (WATCOMC).\n" +msgstr "" + +#: common.c:257 +msgid "Windows 32 bit version (MinGW).\n" +msgstr "" + +#: common.c:259 +msgid "OS/2 version.\n" +msgstr "" + +#: common.c:262 +msgid "With Unicode UTF-16 support.\n" +msgstr "" + +#: common.c:264 +msgid "Without Unicode UTF-16 support.\n" +msgstr "" + +#: common.c:267 +msgid "With native language support.\n" +msgstr "" diff --git a/po/eo-x.po b/po/eo-x.po new file mode 100644 index 0000000..2bd61a1 --- /dev/null +++ b/po/eo-x.po @@ -0,0 +1,367 @@ +# Esperanto translations for dos2unix package. +# Copyright (C) 2009-2012 THE dos2unix's COPYRIGHT HOLDER +# This file is distributed under the same license as the dos2unix package. +# waterlan <waterlan@xs4all.nl>, 2009-2012. +# +msgid "" +msgstr "" +"Project-Id-Version: dos2unix 5.3.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-03-30 09:25+0200\n" +"PO-Revision-Date: 2010-03-07 19:50+0100\n" +"Last-Translator: Rugxulo <rugxulo@gmail.com>\n" +"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: dos2unix.c:76 +msgid "" +"Copyright (C) 2009-2012 Erwin Waterlander\n" +"Copyright (C) 1998 Christian Wurll (Version 3.1)\n" +"Copyright (C) 1998 Bernd Johannes Wuebben (Version 3.0)\n" +"Copyright (C) 1994-1995 Benjamin Lin\n" +"All rights reserved.\n" +"\n" +msgstr "" + +#: dos2unix.c:169 dos2unix.c:200 dos2unix.c:224 dos2unix.c:323 dos2unix.c:351 +#: dos2unix.c:372 unix2dos.c:152 unix2dos.c:183 unix2dos.c:202 unix2dos.c:219 +#: unix2dos.c:331 unix2dos.c:359 unix2dos.c:375 unix2dos.c:389 +msgid "can not write to output file\n" +msgstr "ne povas registri dosieren\n" + +#: dos2unix.c:239 dos2unix.c:386 unix2dos.c:234 unix2dos.c:403 +#, c-format +msgid "program error, invalid conversion mode %d\n" +msgstr "programa eraro, negxustan sxangxmodon %d\n" + +#: dos2unix.c:293 unix2dos.c:288 +#, c-format +msgid "using code page %d.\n" +msgstr "uzante kodpagxon %d.\n" + +#: dos2unix.c:474 unix2dos.c:491 +#, c-format +msgid "Failed to open temporary output file: %s\n" +msgstr "malsukcesis malfermi provizoran dosieron registran: %s\n" + +#: dos2unix.c:481 unix2dos.c:498 +#, c-format +msgid "using %s as temporary file\n" +msgstr "uzante %s kiel provizora dosiero\n" + +#: dos2unix.c:610 unix2dos.c:627 +#, c-format +msgid "Failed to change the permissions of temporary output file %s: %s\n" +msgstr "" +"Malsukcesis sxangxi la permesajxojn de la provizora eldona dosiero %s: %s\n" + +#: dos2unix.c:629 unix2dos.c:646 +#, c-format +msgid "Failed to change the owner and group of temporary output file %s: %s\n" +msgstr "" +"Malsukcesis sxangxi la proprietulon kaj grupon de la provizora eldona " +"dosiero %s: %s\n" + +#: dos2unix.c:682 unix2dos.c:699 +#, c-format +msgid "problems resolving symbolic link '%s'\n" +msgstr "erarojn legante dosieran cxeneron '%s'\n" + +#: dos2unix.c:683 dos2unix.c:717 unix2dos.c:700 unix2dos.c:734 +#, c-format +msgid " output file remains in '%s'\n" +msgstr " kreatan dosieron restas en '%s'\n" + +#: dos2unix.c:712 unix2dos.c:729 +#, c-format +msgid "problems renaming '%s' to '%s': %s\n" +msgstr "problemojn trovitajn renomigi '%s' al '%s': %s\n" + +#: dos2unix.c:715 unix2dos.c:732 +#, c-format +msgid " which is the target of symbolic link '%s'\n" +msgstr " kiu estas la atingon de dosiera cxenero '%s'\n" + +#: dos2unix.c:807 unix2dos.c:824 +msgid "error: Value of environment variable DOS2UNIX_LOCALEDIR is too long.\n" +msgstr "eraro: DOS2UNIX_LOCALEDIR tro longigxis.\n" + +#: dos2unix.c:904 dos2unix.c:935 unix2dos.c:921 unix2dos.c:952 +#, c-format +msgid "active code page: %d\n" +msgstr "nuntempa kodpagxo: %d\n" + +#: dos2unix.c:945 unix2dos.c:962 +#, c-format +msgid "invalid %s conversion mode specified\n" +msgstr "neuzebla %s sxangxmodo menciita\n" + +#: dos2unix.c:955 unix2dos.c:972 +#, c-format +msgid "option '%s' requires an argument\n" +msgstr "elekto '%s' bezonas elekto-vorton\n" + +#: dos2unix.c:968 dos2unix.c:982 dos2unix.c:1176 unix2dos.c:985 unix2dos.c:999 +#: unix2dos.c:1199 +#, c-format +msgid "target of file %s not specified in new file mode\n" +msgstr "ejon de dosiero %s ne menciita en novmodo dosiera\n" + +#: dos2unix.c:1012 dos2unix.c:1096 unix2dos.c:1029 unix2dos.c:1116 +#, c-format +msgid "Skipping %s, not a regular file.\n" +msgstr "Pasante %s, dosiero ne taugxa.\n" + +#: dos2unix.c:1019 unix2dos.c:1036 +#, c-format +msgid "Skipping %s, output file %s is a symbolic link.\n" +msgstr "Evitante %s, atingan dosieron %s jam estas dosiera cxenero.\n" + +#: dos2unix.c:1026 dos2unix.c:1110 unix2dos.c:1043 unix2dos.c:1130 +#, c-format +msgid "Skipping symbolic link %s, target is not a regular file.\n" +msgstr "Evitante dosieran cxeneron %s, atingon ne estas normala dosiero.\n" + +#: dos2unix.c:1033 unix2dos.c:1050 +#, c-format +msgid "Skipping %s, target of symbolic link %s is not a regular file.\n" +msgstr "Evitante %s, atingon de dosiera cxenero %s ne estas normala dosiero.\n" + +#: dos2unix.c:1040 dos2unix.c:1117 unix2dos.c:1057 unix2dos.c:1137 +#, c-format +msgid "Skipping binary file %s\n" +msgstr "Pasante ne-tekstan dosieron %s\n" + +#: dos2unix.c:1047 dos2unix.c:1124 unix2dos.c:1064 unix2dos.c:1144 +#, c-format +msgid "code page %d is not supported.\n" +msgstr "kodpagxo %d ne estas konvertebla.\n" + +#: dos2unix.c:1054 dos2unix.c:1131 unix2dos.c:1071 unix2dos.c:1151 +#, c-format +msgid "" +"Skipping UTF-16 file %s, the current locale character encoding is not " +"UTF-8.\n" +msgstr "Evitante UTF-16 dosieron %s, la nuntempa lingvo-loka litero-enkodigxo ne egalas UTF-8.\n" + +#: dos2unix.c:1061 dos2unix.c:1138 unix2dos.c:1078 unix2dos.c:1158 +#, c-format +msgid "Skipping UTF-16 file %s, the size of wchar_t is %d bytes.\n" +msgstr "Evitante UTF-16 dosieron %s, la mezuro da wchar_t estas %d okopoj.\n" + +#: dos2unix.c:1068 dos2unix.c:1145 unix2dos.c:1085 unix2dos.c:1165 +#, c-format +msgid "Skipping UTF-16 file %s, an UTF-16 conversion error occurred.\n" +msgstr "Evitante UTF-16 dosieron %s, eraro de UTF-16 tradukigxo okazis.\n" + +#: dos2unix.c:1074 +#, c-format +msgid "converting file %s to file %s in Unix format ...\n" +msgstr "sxangxante dosieron %s al dosiero %s Unix-en ...\n" + +#: dos2unix.c:1081 unix2dos.c:1101 +#, c-format +msgid "problems converting file %s to file %s\n" +msgstr "problemojn trovitajn dum sxangxi dosiero %s al dosiero %s\n" + +#: dos2unix.c:1103 unix2dos.c:1123 +#, c-format +msgid "Skipping symbolic link %s.\n" +msgstr "Evitante dosieran cxeneron %s.\n" + +#: dos2unix.c:1151 +#, c-format +msgid "converting file %s to Unix format ...\n" +msgstr "sxangxante dosiero %s Unix-en ...\n" + +#: dos2unix.c:1158 unix2dos.c:1181 +#, c-format +msgid "problems converting file %s\n" +msgstr "problemojn dum sxangxi dosiero %s\n" + +#: unix2dos.c:66 +msgid "" +"Copyright (C) 2009-2012 Erwin Waterlander\n" +"Copyright (C) 1994-1995 Benjamin Lin\n" +"All rights reserved.\n" +"\n" +msgstr "" + +#: unix2dos.c:1092 +#, c-format +msgid "converting file %s to file %s in Mac format ...\n" +msgstr "sxangxante dosiero %s al dosiero %s Mac-en ...\n" + +#: unix2dos.c:1094 +#, c-format +msgid "converting file %s to file %s in DOS format ...\n" +msgstr "sxangxante dosiero %s al dosiero %s DOS-en ...\n" + +#: unix2dos.c:1172 +#, c-format +msgid "converting file %s to Mac format ...\n" +msgstr "sxangxante dosiero %s Mac-en ...\n" + +#: unix2dos.c:1174 +#, c-format +msgid "converting file %s to DOS format ...\n" +msgstr "sxangxante dosiero %s DOS-en ...\n" + +#: common.c:167 +msgid "" +"Redistribution and use in source and binary forms, with or without\n" +"modification, are permitted provided that the following conditions\n" +"are met:\n" +"1. Redistributions of source code must retain the above copyright\n" +" notice, this list of conditions and the following disclaimer.\n" +"2. Redistributions in binary form must reproduce the above copyright\n" +" notice in the documentation and/or other materials provided with\n" +" the distribution.\n" +"\n" +"THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY\n" +"EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n" +"IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" +"PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE\n" +"FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n" +"CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n" +"OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n" +"BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n" +"WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n" +"OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN\n" +"IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" +msgstr "" + +#: common.c:193 +#, c-format +msgid "" +"%s %s (%s)\n" +"Usage: %s [options] [file ...] [-n infile outfile ...]\n" +" -ascii convert only line breaks (default)\n" +" -iso conversion between DOS and ISO-8859-1 character set\n" +" -1252 Use Windows code page 1252 (Western European)\n" +" -437 Use DOS code page 437 (US) (default)\n" +" -850 Use DOS code page 850 (Western European)\n" +" -860 Use DOS code page 860 (Portuguese)\n" +" -863 Use DOS code page 863 (French Canadian)\n" +" -865 Use DOS code page 865 (Nordic)\n" +" -7 Convert 8 bit characters to 7 bit space\n" +" -c, --convmode conversion mode\n" +" convmode ascii, 7bit, iso, mac, default to ascii\n" +" -f, --force force conversion of binary files\n" +" -h, --help give this help\n" +" -k, --keepdate keep output file date\n" +" -L, --license display software license\n" +" -l, --newline add additional newline\n" +" -m, --add-bom add UTF-8 Byte Order Mark\n" +" -n, --newfile write to new file\n" +" infile original file in new file mode\n" +" outfile output file in new file mode\n" +" -o, --oldfile write to old file\n" +" file ... files to convert in old file mode\n" +" -q, --quiet quiet mode, suppress all warnings\n" +" always on in stdio mode\n" +" -s, --safe skip binary files (default)\n" +msgstr "" +"%s %s (%s)\n" +"Uzado: %s [elektojn] [dosiero ...] [-n antauxajxo kreajxo ...]\n" +" -ascii nur traduku linio-finojn (jam ensxaltita)\n" +" -iso traduku inter DOS kaj ISO-8859-1 literaro\n" +" -1252 Uzu Vindozan kodpagxon 1252 (Okcident-Euxropa)\n" +" -437 Uzu DOS kodpagxon 437 (Usona) (jam ensxaltita)\n" +" -850 Uzu DOS kodpagxon 850 (Okcident-Euxropa)\n" +" -860 Uzu DOS kodpagxon 860 (Portugala)\n" +" -863 Uzu DOS kodpagxon 863 (Kebekia)\n" +" -865 Uzu DOS kodpagxon 865 (Nordlandaj)\n" +" -7 Traduku de 8-bitaj literoj en blankspacon\n" +" -c, --convmode modo de sxangxo\n" +" sxangxmodo ascii, 7bit, iso, mac, provizore elektita ascii\n" +" -f, --force forte konvertado de netekstaj dosieroj\n" +" -h, --help diri cxi tiun mesagxon\n" +" -k, --keepdate konservi dato-tempon dosieran\n" +" -L, --license eldiru permesilon tekstan\n" +" -l, --newline aldoni markon linian finan\n" +" -m, --aldoni-bom aldoni UTF-8 internan ordo-markon\n" +" -n, --newfile registri novan dosieron\n" +" antauxajxo al antauxa dosiero metita novmoden\n" +" kreajxo al dosiero registrita novmoden\n" +" -o, --oldfile registri malnovan dosieron\n" +" dosiero... dosiero(j)n por registri per malnova modo\n" +" -q, --quiet silente eviti avertojn\n" +" cxiam ensxaltata dum stdio modo\n" +" -s, --safe evitu netekstajn dosierojn (jam sxaltita)\n" + +#: common.c:223 +#, c-format +msgid "" +" -F, --follow-symlink follow symbolic links and convert the targets\n" +" -R, --replace-symlink replace symbolic links with converted files\n" +" (original target files remain unchanged)\n" +" -S, --skip-symlink keep symbolic links and targets unchanged (default)\n" +msgstr "" +" -F, --follow-symlink legu dosierajn cxenerojn kaj konverti la atingojn\n" +" -R, --replace-symlink anstatauxe registru dosierajn cxenerojn per " +"konvertotaj dosieroj\n" +" (ne-cxeneraj atingaj dosieroj restas nesxangxitaj)\n" +" -S, --skip-symlink retenu dosierajn cxenerojn kaj atingojn nesxangxataj " +"(jam sxaltita)\n" + +#: common.c:229 +#, c-format +msgid " -V, --version display version number\n" +msgstr " -V, --version diri eldono-numeron\n" + +#: common.c:241 +msgid "DOS 16 bit version (WATCOMC).\n" +msgstr "DOS-16 eldono (WATCOMC).\n" + +#: common.c:243 +msgid "DOS 16 bit version (TURBOC).\n" +msgstr "DOS-16 eldono (TURBOC).\n" + +#: common.c:245 +msgid "DOS 32 bit version (WATCOMC).\n" +msgstr "DOS-32 eldono (WATCOMC).\n" + +#: common.c:247 +msgid "DOS 32 bit version (DJGPP).\n" +msgstr "DOS-32 eldono (DJGPP).\n" + +#: common.c:249 +msgid "MSYS version.\n" +msgstr "MSYS eldono.\n" + +#: common.c:251 +msgid "Cygwin version.\n" +msgstr "Cygwin eldono.\n" + +#: common.c:253 +msgid "Windows 64 bit version (MinGW-w64).\n" +msgstr "Windows-64 eldono (MinGW-w64).\n" + +#: common.c:255 +msgid "Windows 32 bit version (WATCOMC).\n" +msgstr "Windows-32 eldono (WATCOMC).\n" + +#: common.c:257 +msgid "Windows 32 bit version (MinGW).\n" +msgstr "Windows-32 eldono (MinGW).\n" + +#: common.c:259 +msgid "OS/2 version.\n" +msgstr "OS/2 eldono.\n" + +#: common.c:262 +msgid "With Unicode UTF-16 support.\n" +msgstr "Kun subteno de Unikodo da UTF-16.\n" + +#: common.c:264 +msgid "Without Unicode UTF-16 support.\n" +msgstr "Sen subteno de Unikodo da UTF-16.\n" + +#: common.c:267 +msgid "With native language support.\n" +msgstr "Uzante denaskan lingvon sistemon.\n" diff --git a/po/eo.po b/po/eo.po new file mode 100644 index 0000000..5bd7fe8 --- /dev/null +++ b/po/eo.po @@ -0,0 +1,367 @@ +# Esperanto translations for dos2unix package. +# Copyright (C) 2009-2012 THE dos2unix's COPYRIGHT HOLDER +# This file is distributed under the same license as the dos2unix package. +# waterlan <waterlan@xs4all.nl>, 2009-2012. +# +msgid "" +msgstr "" +"Project-Id-Version: dos2unix 5.3.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-03-30 09:25+0200\n" +"PO-Revision-Date: 2010-03-07 19:50+0100\n" +"Last-Translator: RuÄulo <ruÄulo@gmail.com>\n" +"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: dos2unix.c:76 +msgid "" +"Copyright (C) 2009-2012 Erwin Waterlander\n" +"Copyright (C) 1998 Christian Wurll (Version 3.1)\n" +"Copyright (C) 1998 Bernd Johannes Wuebben (Version 3.0)\n" +"Copyright (C) 1994-1995 Benjamin Lin\n" +"All rights reserved.\n" +"\n" +msgstr "" + +#: dos2unix.c:169 dos2unix.c:200 dos2unix.c:224 dos2unix.c:323 dos2unix.c:351 +#: dos2unix.c:372 unix2dos.c:152 unix2dos.c:183 unix2dos.c:202 unix2dos.c:219 +#: unix2dos.c:331 unix2dos.c:359 unix2dos.c:375 unix2dos.c:389 +msgid "can not write to output file\n" +msgstr "ne povas registri dosieren\n" + +#: dos2unix.c:239 dos2unix.c:386 unix2dos.c:234 unix2dos.c:403 +#, c-format +msgid "program error, invalid conversion mode %d\n" +msgstr "programa eraro, neÄustan ÅanÄmodon %d\n" + +#: dos2unix.c:293 unix2dos.c:288 +#, c-format +msgid "using code page %d.\n" +msgstr "uzante kodpaÄon %d.\n" + +#: dos2unix.c:474 unix2dos.c:491 +#, c-format +msgid "Failed to open temporary output file: %s\n" +msgstr "malsukcesis malfermi provizoran dosieron registran: %s\n" + +#: dos2unix.c:481 unix2dos.c:498 +#, c-format +msgid "using %s as temporary file\n" +msgstr "uzante %s kiel provizora dosiero\n" + +#: dos2unix.c:610 unix2dos.c:627 +#, c-format +msgid "Failed to change the permissions of temporary output file %s: %s\n" +msgstr "" +"Malsukcesis ÅanÄi la permesaĵojn de la provizora eldona dosiero %s: %s\n" + +#: dos2unix.c:629 unix2dos.c:646 +#, c-format +msgid "Failed to change the owner and group of temporary output file %s: %s\n" +msgstr "" +"Malsukcesis ÅanÄi la proprietulon kaj grupon de la provizora eldona dosiero " +"%s: %s\n" + +#: dos2unix.c:682 unix2dos.c:699 +#, c-format +msgid "problems resolving symbolic link '%s'\n" +msgstr "erarojn legante dosieran ĉeneron '%s'\n" + +#: dos2unix.c:683 dos2unix.c:717 unix2dos.c:700 unix2dos.c:734 +#, c-format +msgid " output file remains in '%s'\n" +msgstr " kreatan dosieron restas en '%s'\n" + +#: dos2unix.c:712 unix2dos.c:729 +#, c-format +msgid "problems renaming '%s' to '%s': %s\n" +msgstr "problemojn trovitajn renomigi '%s' al '%s': %s\n" + +#: dos2unix.c:715 unix2dos.c:732 +#, c-format +msgid " which is the target of symbolic link '%s'\n" +msgstr " kiu estas la atingon de dosiera ĉenero '%s'\n" + +#: dos2unix.c:807 unix2dos.c:824 +msgid "error: Value of environment variable DOS2UNIX_LOCALEDIR is too long.\n" +msgstr "eraro: DOS2UNIX_LOCALEDIR tro longiÄis.\n" + +#: dos2unix.c:904 dos2unix.c:935 unix2dos.c:921 unix2dos.c:952 +#, c-format +msgid "active code page: %d\n" +msgstr "nuntempa kodpaÄo: %d\n" + +#: dos2unix.c:945 unix2dos.c:962 +#, c-format +msgid "invalid %s conversion mode specified\n" +msgstr "neuzebla %s ÅanÄmodo menciita\n" + +#: dos2unix.c:955 unix2dos.c:972 +#, c-format +msgid "option '%s' requires an argument\n" +msgstr "elekto '%s' bezonas elekto-vorton\n" + +#: dos2unix.c:968 dos2unix.c:982 dos2unix.c:1176 unix2dos.c:985 unix2dos.c:999 +#: unix2dos.c:1199 +#, c-format +msgid "target of file %s not specified in new file mode\n" +msgstr "ejon de dosiero %s ne menciita en novmodo dosiera\n" + +#: dos2unix.c:1012 dos2unix.c:1096 unix2dos.c:1029 unix2dos.c:1116 +#, c-format +msgid "Skipping %s, not a regular file.\n" +msgstr "Pasante %s, dosiero ne tauÄa.\n" + +#: dos2unix.c:1019 unix2dos.c:1036 +#, c-format +msgid "Skipping %s, output file %s is a symbolic link.\n" +msgstr "Evitante %s, atingan dosieron %s jam estas dosiera ĉenero.\n" + +#: dos2unix.c:1026 dos2unix.c:1110 unix2dos.c:1043 unix2dos.c:1130 +#, c-format +msgid "Skipping symbolic link %s, target is not a regular file.\n" +msgstr "Evitante dosieran ĉeneron %s, atingon ne estas normala dosiero.\n" + +#: dos2unix.c:1033 unix2dos.c:1050 +#, c-format +msgid "Skipping %s, target of symbolic link %s is not a regular file.\n" +msgstr "Evitante %s, atingon de dosiera ĉenero %s ne estas normala dosiero.\n" + +#: dos2unix.c:1040 dos2unix.c:1117 unix2dos.c:1057 unix2dos.c:1137 +#, c-format +msgid "Skipping binary file %s\n" +msgstr "Pasante ne-tekstan dosieron %s\n" + +#: dos2unix.c:1047 dos2unix.c:1124 unix2dos.c:1064 unix2dos.c:1144 +#, c-format +msgid "code page %d is not supported.\n" +msgstr "kodpaÄo %d ne estas konvertebla.\n" + +#: dos2unix.c:1054 dos2unix.c:1131 unix2dos.c:1071 unix2dos.c:1151 +#, c-format +msgid "" +"Skipping UTF-16 file %s, the current locale character encoding is not " +"UTF-8.\n" +msgstr "Evitante UTF-16 dosieron %s, la nuntempa lingvo-loka litero-enkodiÄo ne egalas UTF-8.\n" + +#: dos2unix.c:1061 dos2unix.c:1138 unix2dos.c:1078 unix2dos.c:1158 +#, c-format +msgid "Skipping UTF-16 file %s, the size of wchar_t is %d bytes.\n" +msgstr "Evitante UTF-16 dosieron %s, la mezuro da wchar_t estas %d okopoj.\n" + +#: dos2unix.c:1068 dos2unix.c:1145 unix2dos.c:1085 unix2dos.c:1165 +#, c-format +msgid "Skipping UTF-16 file %s, an UTF-16 conversion error occurred.\n" +msgstr "Evitante UTF-16 dosieron %s, eraro de UTF-16 tradukiÄo okazis.\n" + +#: dos2unix.c:1074 +#, c-format +msgid "converting file %s to file %s in Unix format ...\n" +msgstr "ÅanÄante dosieron %s al dosiero %s Unix-en ...\n" + +#: dos2unix.c:1081 unix2dos.c:1101 +#, c-format +msgid "problems converting file %s to file %s\n" +msgstr "problemojn trovitajn dum ÅanÄi dosiero %s al dosiero %s\n" + +#: dos2unix.c:1103 unix2dos.c:1123 +#, c-format +msgid "Skipping symbolic link %s.\n" +msgstr "Evitante dosieran ĉeneron %s.\n" + +#: dos2unix.c:1151 +#, c-format +msgid "converting file %s to Unix format ...\n" +msgstr "ÅanÄante dosiero %s Unix-en ...\n" + +#: dos2unix.c:1158 unix2dos.c:1181 +#, c-format +msgid "problems converting file %s\n" +msgstr "problemojn dum ÅanÄi dosiero %s\n" + +#: unix2dos.c:66 +msgid "" +"Copyright (C) 2009-2012 Erwin Waterlander\n" +"Copyright (C) 1994-1995 Benjamin Lin\n" +"All rights reserved.\n" +"\n" +msgstr "" + +#: unix2dos.c:1092 +#, c-format +msgid "converting file %s to file %s in Mac format ...\n" +msgstr "ÅanÄante dosiero %s al dosiero %s Mac-en ...\n" + +#: unix2dos.c:1094 +#, c-format +msgid "converting file %s to file %s in DOS format ...\n" +msgstr "ÅanÄante dosiero %s al dosiero %s DOS-en ...\n" + +#: unix2dos.c:1172 +#, c-format +msgid "converting file %s to Mac format ...\n" +msgstr "ÅanÄante dosiero %s Mac-en ...\n" + +#: unix2dos.c:1174 +#, c-format +msgid "converting file %s to DOS format ...\n" +msgstr "ÅanÄante dosiero %s DOS-en ...\n" + +#: common.c:167 +msgid "" +"Redistribution and use in source and binary forms, with or without\n" +"modification, are permitted provided that the following conditions\n" +"are met:\n" +"1. Redistributions of source code must retain the above copyright\n" +" notice, this list of conditions and the following disclaimer.\n" +"2. Redistributions in binary form must reproduce the above copyright\n" +" notice in the documentation and/or other materials provided with\n" +" the distribution.\n" +"\n" +"THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY\n" +"EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n" +"IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" +"PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE\n" +"FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n" +"CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n" +"OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n" +"BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n" +"WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n" +"OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN\n" +"IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" +msgstr "" + +#: common.c:193 +#, c-format +msgid "" +"%s %s (%s)\n" +"Usage: %s [options] [file ...] [-n infile outfile ...]\n" +" -ascii convert only line breaks (default)\n" +" -iso conversion between DOS and ISO-8859-1 character set\n" +" -1252 Use Windows code page 1252 (Western European)\n" +" -437 Use DOS code page 437 (US) (default)\n" +" -850 Use DOS code page 850 (Western European)\n" +" -860 Use DOS code page 860 (Portuguese)\n" +" -863 Use DOS code page 863 (French Canadian)\n" +" -865 Use DOS code page 865 (Nordic)\n" +" -7 Convert 8 bit characters to 7 bit space\n" +" -c, --convmode conversion mode\n" +" convmode ascii, 7bit, iso, mac, default to ascii\n" +" -f, --force force conversion of binary files\n" +" -h, --help give this help\n" +" -k, --keepdate keep output file date\n" +" -L, --license display software license\n" +" -l, --newline add additional newline\n" +" -m, --add-bom add UTF-8 Byte Order Mark\n" +" -n, --newfile write to new file\n" +" infile original file in new file mode\n" +" outfile output file in new file mode\n" +" -o, --oldfile write to old file\n" +" file ... files to convert in old file mode\n" +" -q, --quiet quiet mode, suppress all warnings\n" +" always on in stdio mode\n" +" -s, --safe skip binary files (default)\n" +msgstr "" +"%s %s (%s)\n" +"Uzado: %s [elektojn] [dosiero ...] [-n antaÅaĵo kreaĵo ...]\n" +" -ascii nur traduku linio-finojn (jam enÅaltita)\n" +" -iso traduku inter DOS kaj ISO-8859-1 literaro\n" +" -1252 Uzu Vindozan kodpaÄon 1252 (Okcident-EÅropa)\n" +" -437 Uzu DOS kodpaÄon 437 (Usona) (jam enÅaltita)\n" +" -850 Uzu DOS kodpaÄon 850 (Okcident-EÅropa)\n" +" -860 Uzu DOS kodpaÄon 860 (Portugala)\n" +" -863 Uzu DOS kodpaÄon 863 (Kebekia)\n" +" -865 Uzu DOS kodpaÄon 865 (Nordlandaj)\n" +" -7 Traduku de 8-bitaj literoj en blankspacon\n" +" -c, --convmode modo de ÅanÄo\n" +" ÅanÄmodo ascii, 7bit, iso, mac, provizore elektita ascii\n" +" -f, --force forte konvertado de netekstaj dosieroj\n" +" -h, --help diri ĉi tiun mesaÄon\n" +" -k, --keepdate konservi dato-tempon dosieran\n" +" -L, --license eldiru permesilon tekstan\n" +" -l, --newline aldoni markon linian finan\n" +" -m, --aldoni-bom aldoni UTF-8 internan ordo-markon\n" +" -n, --newfile registri novan dosieron\n" +" antaÅaĵo al antaÅa dosiero metita novmoden\n" +" kreaĵo al dosiero registrita novmoden\n" +" -o, --oldfile registri malnovan dosieron\n" +" dosiero... dosiero(j)n por registri per malnova modo\n" +" -q, --quiet silente eviti avertojn\n" +" ĉiam enÅaltata dum stdio modo\n" +" -s, --safe evitu netekstajn dosierojn (jam Åaltita)\n" + +#: common.c:223 +#, c-format +msgid "" +" -F, --follow-symlink follow symbolic links and convert the targets\n" +" -R, --replace-symlink replace symbolic links with converted files\n" +" (original target files remain unchanged)\n" +" -S, --skip-symlink keep symbolic links and targets unchanged (default)\n" +msgstr "" +" -F, --follow-symlink legu dosierajn ĉenerojn kaj konverti la atingojn\n" +" -R, --replace-symlink anstataÅe registru dosierajn ĉenerojn per konvertotaj " +"dosieroj\n" +" (ne-ĉeneraj atingaj dosieroj restas neÅanÄitaj)\n" +" -S, --skip-symlink retenu dosierajn ĉenerojn kaj atingojn neÅanÄataj " +"(jam Åaltita)\n" + +#: common.c:229 +#, c-format +msgid " -V, --version display version number\n" +msgstr " -V, --version diri eldono-numeron\n" + +#: common.c:241 +msgid "DOS 16 bit version (WATCOMC).\n" +msgstr "DOS-16 eldono (WATCOMC).\n" + +#: common.c:243 +msgid "DOS 16 bit version (TURBOC).\n" +msgstr "DOS-16 eldono (TURBOC).\n" + +#: common.c:245 +msgid "DOS 32 bit version (WATCOMC).\n" +msgstr "DOS-32 eldono (WATCOMC).\n" + +#: common.c:247 +msgid "DOS 32 bit version (DJGPP).\n" +msgstr "DOS-32 eldono (DJGPP).\n" + +#: common.c:249 +msgid "MSYS version.\n" +msgstr "MSYS eldono.\n" + +#: common.c:251 +msgid "Cygwin version.\n" +msgstr "Cygwin eldono.\n" + +#: common.c:253 +msgid "Windows 64 bit version (MinGW-w64).\n" +msgstr "Windows-64 eldono (MinGW-w64).\n" + +#: common.c:255 +msgid "Windows 32 bit version (WATCOMC).\n" +msgstr "Windows-32 eldono (WATCOMC).\n" + +#: common.c:257 +msgid "Windows 32 bit version (MinGW).\n" +msgstr "Windows-32 eldono (MinGW).\n" + +#: common.c:259 +msgid "OS/2 version.\n" +msgstr "OS/2 eldono.\n" + +#: common.c:262 +msgid "With Unicode UTF-16 support.\n" +msgstr "Kun subteno de Unikodo da UTF-16.\n" + +#: common.c:264 +msgid "Without Unicode UTF-16 support.\n" +msgstr "Sen subteno de Unikodo da UTF-16.\n" + +#: common.c:267 +msgid "With native language support.\n" +msgstr "Uzante denaskan lingvon sistemon.\n" diff --git a/po/es.po b/po/es.po new file mode 100644 index 0000000..139492f --- /dev/null +++ b/po/es.po @@ -0,0 +1,378 @@ +# Spanish translations for dos2unix package +# Traducciones al español para el paquete dos2unix. +# Copyright (C) 2011,2012 THE dos2unix'S COPYRIGHT HOLDER +# This file is distributed under the same license as the dos2unix package. +# Julio A. Freyre-Gonzalez <jfreyreg@gmail.com>, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: dos2unix\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-03-30 09:25+0200\n" +"PO-Revision-Date: 2011-06-20 09:13+0200\n" +"Last-Translator: <jfreyreg@gmail.com>\n" +"Language-Team: Spanish\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: dos2unix.c:76 +msgid "" +"Copyright (C) 2009-2012 Erwin Waterlander\n" +"Copyright (C) 1998 Christian Wurll (Version 3.1)\n" +"Copyright (C) 1998 Bernd Johannes Wuebben (Version 3.0)\n" +"Copyright (C) 1994-1995 Benjamin Lin\n" +"All rights reserved.\n" +"\n" +msgstr "" + +#: dos2unix.c:169 dos2unix.c:200 dos2unix.c:224 dos2unix.c:323 dos2unix.c:351 +#: dos2unix.c:372 unix2dos.c:152 unix2dos.c:183 unix2dos.c:202 unix2dos.c:219 +#: unix2dos.c:331 unix2dos.c:359 unix2dos.c:375 unix2dos.c:389 +msgid "can not write to output file\n" +msgstr "no puedo escribir al archivo de salida\n" + +#: dos2unix.c:239 dos2unix.c:386 unix2dos.c:234 unix2dos.c:403 +#, c-format +msgid "program error, invalid conversion mode %d\n" +msgstr "error, modo de conversión %d inválido\n" + +#: dos2unix.c:293 unix2dos.c:288 +#, c-format +msgid "using code page %d.\n" +msgstr "usando página de códigos %d.\n" + +#: dos2unix.c:474 unix2dos.c:491 +#, c-format +msgid "Failed to open temporary output file: %s\n" +msgstr "Falló al abrir el archivo de salida temporal: %s\n" + +#: dos2unix.c:481 unix2dos.c:498 +#, c-format +msgid "using %s as temporary file\n" +msgstr "usando %s como archivo temporal\n" + +#: dos2unix.c:610 unix2dos.c:627 +#, c-format +msgid "Failed to change the permissions of temporary output file %s: %s\n" +msgstr "Error al cambiar los permisos del archivo temporal de salida %s: %s\n" + +#: dos2unix.c:629 unix2dos.c:646 +#, c-format +msgid "Failed to change the owner and group of temporary output file %s: %s\n" +msgstr "" +"Error al cambiar el propietario y grupo del archivo temporal de salida %s: " +"%s\n" + +#: dos2unix.c:682 unix2dos.c:699 +#, c-format +msgid "problems resolving symbolic link '%s'\n" +msgstr "problemas al resolver el enlace simbólico '%s'\n" + +#: dos2unix.c:683 dos2unix.c:717 unix2dos.c:700 unix2dos.c:734 +#, c-format +msgid " output file remains in '%s'\n" +msgstr " el archivo de salida permanece en '%s'\n" + +#: dos2unix.c:712 unix2dos.c:729 +#, c-format +msgid "problems renaming '%s' to '%s': %s\n" +msgstr "problemas al renombrar '%s' como '%s': %s\n" + +#: dos2unix.c:715 unix2dos.c:732 +#, c-format +msgid " which is the target of symbolic link '%s'\n" +msgstr " cual es el destino del enlace simbólico '%s'\n" + +#: dos2unix.c:807 unix2dos.c:824 +msgid "error: Value of environment variable DOS2UNIX_LOCALEDIR is too long.\n" +msgstr "" +"error: El valor de la variable de entorno DOS2UNIX_LOCALEDIR es demasiado " +"largo.\n" + +#: dos2unix.c:904 dos2unix.c:935 unix2dos.c:921 unix2dos.c:952 +#, c-format +msgid "active code page: %d\n" +msgstr "Página de códigos activa: %d\n" + +#: dos2unix.c:945 unix2dos.c:962 +#, c-format +msgid "invalid %s conversion mode specified\n" +msgstr "modo de conversión %s especificado es inválido\n" + +#: dos2unix.c:955 unix2dos.c:972 +#, c-format +msgid "option '%s' requires an argument\n" +msgstr "el parámetro '%s' requiere un argumento\n" + +#: dos2unix.c:968 dos2unix.c:982 dos2unix.c:1176 unix2dos.c:985 unix2dos.c:999 +#: unix2dos.c:1199 +#, c-format +msgid "target of file %s not specified in new file mode\n" +msgstr "" +"el destino del archivo %s no se especificó en el modo de archivo nuevo\n" + +#: dos2unix.c:1012 dos2unix.c:1096 unix2dos.c:1029 unix2dos.c:1116 +#, c-format +msgid "Skipping %s, not a regular file.\n" +msgstr "Ignorando %s, no es un archivo regular.\n" + +#: dos2unix.c:1019 unix2dos.c:1036 +#, c-format +msgid "Skipping %s, output file %s is a symbolic link.\n" +msgstr "Ignorando %s, el archivo de salida %s es un enlace simbólico.\n" + +#: dos2unix.c:1026 dos2unix.c:1110 unix2dos.c:1043 unix2dos.c:1130 +#, c-format +msgid "Skipping symbolic link %s, target is not a regular file.\n" +msgstr "Ignorando enlace simbólico %s, el destino no es un archivo regular.\n" + +#: dos2unix.c:1033 unix2dos.c:1050 +#, c-format +msgid "Skipping %s, target of symbolic link %s is not a regular file.\n" +msgstr "" +"Ignorando %s, el destino del enlace simbólico %s no es un archivo regular.\n" + +#: dos2unix.c:1040 dos2unix.c:1117 unix2dos.c:1057 unix2dos.c:1137 +#, c-format +msgid "Skipping binary file %s\n" +msgstr "Ignorando archivo binario %s\n" + +#: dos2unix.c:1047 dos2unix.c:1124 unix2dos.c:1064 unix2dos.c:1144 +#, c-format +msgid "code page %d is not supported.\n" +msgstr "La página de códigos %d no está soportada.\n" + +#: dos2unix.c:1054 dos2unix.c:1131 unix2dos.c:1071 unix2dos.c:1151 +#, c-format +msgid "" +"Skipping UTF-16 file %s, the current locale character encoding is not " +"UTF-8.\n" +msgstr "" + +#: dos2unix.c:1061 dos2unix.c:1138 unix2dos.c:1078 unix2dos.c:1158 +#, c-format +msgid "Skipping UTF-16 file %s, the size of wchar_t is %d bytes.\n" +msgstr "" + +#: dos2unix.c:1068 dos2unix.c:1145 unix2dos.c:1085 unix2dos.c:1165 +#, c-format +msgid "Skipping UTF-16 file %s, an UTF-16 conversion error occurred.\n" +msgstr "" + +#: dos2unix.c:1074 +#, c-format +msgid "converting file %s to file %s in Unix format ...\n" +msgstr "convirtiendo archivo %s a %s in formato Unix ...\n" + +#: dos2unix.c:1081 unix2dos.c:1101 +#, c-format +msgid "problems converting file %s to file %s\n" +msgstr "problemas al convertir el archivo %s a %s\n" + +#: dos2unix.c:1103 unix2dos.c:1123 +#, c-format +msgid "Skipping symbolic link %s.\n" +msgstr "Ignorando enlace simbólico %s.\n" + +#: dos2unix.c:1151 +#, c-format +msgid "converting file %s to Unix format ...\n" +msgstr "convirtiendo archivo %s a formato Unix ...\n" + +#: dos2unix.c:1158 unix2dos.c:1181 +#, c-format +msgid "problems converting file %s\n" +msgstr "problemas convirtiendo el archivo %s\n" + +#: unix2dos.c:66 +msgid "" +"Copyright (C) 2009-2012 Erwin Waterlander\n" +"Copyright (C) 1994-1995 Benjamin Lin\n" +"All rights reserved.\n" +"\n" +msgstr "" + +#: unix2dos.c:1092 +#, c-format +msgid "converting file %s to file %s in Mac format ...\n" +msgstr "convirtiendo archivo %s a %s in formato Mac ...\n" + +#: unix2dos.c:1094 +#, c-format +msgid "converting file %s to file %s in DOS format ...\n" +msgstr "convirtiendo archivo %s a %s en formato DOS ...\n" + +#: unix2dos.c:1172 +#, c-format +msgid "converting file %s to Mac format ...\n" +msgstr "convirtiendo archivo %s a formato Mac ...\n" + +#: unix2dos.c:1174 +#, c-format +msgid "converting file %s to DOS format ...\n" +msgstr "convirtiendo archivo %s a formato DOS ...\n" + +#: common.c:167 +msgid "" +"Redistribution and use in source and binary forms, with or without\n" +"modification, are permitted provided that the following conditions\n" +"are met:\n" +"1. Redistributions of source code must retain the above copyright\n" +" notice, this list of conditions and the following disclaimer.\n" +"2. Redistributions in binary form must reproduce the above copyright\n" +" notice in the documentation and/or other materials provided with\n" +" the distribution.\n" +"\n" +"THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY\n" +"EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n" +"IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" +"PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE\n" +"FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n" +"CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n" +"OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n" +"BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n" +"WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n" +"OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN\n" +"IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" +msgstr "" + +#: common.c:193 +#, fuzzy, c-format +msgid "" +"%s %s (%s)\n" +"Usage: %s [options] [file ...] [-n infile outfile ...]\n" +" -ascii convert only line breaks (default)\n" +" -iso conversion between DOS and ISO-8859-1 character set\n" +" -1252 Use Windows code page 1252 (Western European)\n" +" -437 Use DOS code page 437 (US) (default)\n" +" -850 Use DOS code page 850 (Western European)\n" +" -860 Use DOS code page 860 (Portuguese)\n" +" -863 Use DOS code page 863 (French Canadian)\n" +" -865 Use DOS code page 865 (Nordic)\n" +" -7 Convert 8 bit characters to 7 bit space\n" +" -c, --convmode conversion mode\n" +" convmode ascii, 7bit, iso, mac, default to ascii\n" +" -f, --force force conversion of binary files\n" +" -h, --help give this help\n" +" -k, --keepdate keep output file date\n" +" -L, --license display software license\n" +" -l, --newline add additional newline\n" +" -m, --add-bom add UTF-8 Byte Order Mark\n" +" -n, --newfile write to new file\n" +" infile original file in new file mode\n" +" outfile output file in new file mode\n" +" -o, --oldfile write to old file\n" +" file ... files to convert in old file mode\n" +" -q, --quiet quiet mode, suppress all warnings\n" +" always on in stdio mode\n" +" -s, --safe skip binary files (default)\n" +msgstr "" +"%s %s (%s)\n" +"Uso: %s [parámetros] [archivo ...] [-n archivo_de_entrada " +"archivo_de_salida ...]\n" +" -ascii solamente convierte los saltos de línea (por " +"defecto)\n" +" -iso conversión entre DOS y el conjunto de caracteres " +"ISO-8859-1\n" +" -1252 Usa la página de códigos Windows 1252 (Europa " +"Occidental)\n" +" -437 Usa la página de códigos DOS 437 (EE. UU.) (por " +"defecto)\n" +" -850 Usa la página de códigos DOS 850 (Europa Occidental)\n" +" -860 Usa la página de códigos DOS 860 (Portugués)\n" +" -863 Usa la página de códigos DOS 863 (Francocanadiense)\n" +" -865 Usa la página de códigos DOS 865 (Nórdico)\n" +" -7 Convierte caracteres de 8 bits al espacio de 7 bits\n" +" -c, --convmode modo de conversión\n" +" modo_de_conversion ascii, 7bit, iso, mac, por defecto es ascii\n" +" -f, --force fuerza la conversión de archivos binarios\n" +" -h, --help arroja esta ayuda\n" +" -k, --keepdate conserva la fecha en el archivo de salida\n" +" -L, --license muestra la licencia del programa\n" +" -l, --newline añade salto de línea adicional\n" +" -n, --newfile escribe a un nuevo archivo\n" +" archivo_de_entrada archivo original en el modo de archivo nuevo\n" +" archivo_de_salida archivo de salida en el modo de archivo nuevo\n" +" -o, --oldfile escribe al archivo antiguo\n" +" archivo ... archivos a convertir en el modo de archivo antiguo\n" +" -q, --quiet modo silencioso, suprime todas las advertencias\n" +" siempre en modo stdio\n" +" -s, --safe ignora archivos binarios (por defecto)\n" + +#: common.c:223 +#, c-format +msgid "" +" -F, --follow-symlink follow symbolic links and convert the targets\n" +" -R, --replace-symlink replace symbolic links with converted files\n" +" (original target files remain unchanged)\n" +" -S, --skip-symlink keep symbolic links and targets unchanged (default)\n" +msgstr "" +" -F, --follow-symlink sigue los enlaces simbólicos y convierte los " +"destinos\n" +" -R, --replace-symlink reemplaza los enlaces simbólicos con los archivos " +"convertidos\n" +" (los archivos destino originales no son alterados)\n" +" -S, --skip-symlink no altera los enlaces simbólicos ni sus destinos (por " +"defecto)\n" + +#: common.c:229 +#, c-format +msgid " -V, --version display version number\n" +msgstr " -V, --version despliega el número de versión\n" + +#: common.c:241 +msgid "DOS 16 bit version (WATCOMC).\n" +msgstr "Versión DOS de 16 bit (WATCOMC).\n" + +#: common.c:243 +msgid "DOS 16 bit version (TURBOC).\n" +msgstr "Versión DOS de 16 bit (TURBOC).\n" + +#: common.c:245 +msgid "DOS 32 bit version (WATCOMC).\n" +msgstr "Versión DOS de 32 bit (WATCOMC).\n" + +#: common.c:247 +msgid "DOS 32 bit version (DJGPP).\n" +msgstr "Versión DOS de 32 bit (DJGPP).\n" + +#: common.c:249 +msgid "MSYS version.\n" +msgstr "Versión para MSYS.\n" + +#: common.c:251 +msgid "Cygwin version.\n" +msgstr "Versión para Cygwin.\n" + +#: common.c:253 +msgid "Windows 64 bit version (MinGW-w64).\n" +msgstr "Versión Windows de 64 bit (MinGW-w64).\n" + +#: common.c:255 +msgid "Windows 32 bit version (WATCOMC).\n" +msgstr "Versión Windows de 32 bit (WATCOMC).\n" + +#: common.c:257 +msgid "Windows 32 bit version (MinGW).\n" +msgstr "Versión Windows de 32 bit (MinGW).\n" + +#: common.c:259 +msgid "OS/2 version.\n" +msgstr "Versión para OS/2.\n" + +#: common.c:262 +#, fuzzy +msgid "With Unicode UTF-16 support.\n" +msgstr "Con soporte de idioma materno.\n" + +#: common.c:264 +#, fuzzy +msgid "Without Unicode UTF-16 support.\n" +msgstr "Con soporte de idioma materno.\n" + +#: common.c:267 +msgid "With native language support.\n" +msgstr "Con soporte de idioma materno.\n" diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 0000000..28ba94d --- /dev/null +++ b/po/nl.po @@ -0,0 +1,378 @@ +# dos2unix, DOS/MAC to UNIX text file format converter. +# Copyright (C) 2009-2012 +# This file is distributed under the same license as the dos2unix package. +# Erwin Waterlander <waterlan@xs4all.nl>, 2009-2012. +# +msgid "" +msgstr "" +"Project-Id-Version: dos2unix 5.3.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-03-30 09:25+0200\n" +"PO-Revision-Date: 2009-12-08 21:59+0100\n" +"Last-Translator: Erwin Waterlander <waterlan@xs4all.nl>\n" +"Language-Team: Dutch <vertaling@vrijschrift.org>\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: dos2unix.c:76 +msgid "" +"Copyright (C) 2009-2012 Erwin Waterlander\n" +"Copyright (C) 1998 Christian Wurll (Version 3.1)\n" +"Copyright (C) 1998 Bernd Johannes Wuebben (Version 3.0)\n" +"Copyright (C) 1994-1995 Benjamin Lin\n" +"All rights reserved.\n" +"\n" +msgstr "" + +#: dos2unix.c:169 dos2unix.c:200 dos2unix.c:224 dos2unix.c:323 dos2unix.c:351 +#: dos2unix.c:372 unix2dos.c:152 unix2dos.c:183 unix2dos.c:202 unix2dos.c:219 +#: unix2dos.c:331 unix2dos.c:359 unix2dos.c:375 unix2dos.c:389 +msgid "can not write to output file\n" +msgstr "kan niet schrijven naar uitvoerbestand\n" + +#: dos2unix.c:239 dos2unix.c:386 unix2dos.c:234 unix2dos.c:403 +#, c-format +msgid "program error, invalid conversion mode %d\n" +msgstr "programma fout, ongeldige conversie modus %d\n" + +#: dos2unix.c:293 unix2dos.c:288 +#, c-format +msgid "using code page %d.\n" +msgstr "codetabel %d wordt gebruikt.\n" + +#: dos2unix.c:474 unix2dos.c:491 +#, c-format +msgid "Failed to open temporary output file: %s\n" +msgstr "Niet gelukt om tijdelijk uitvoerbestand te openen: %s\n" + +#: dos2unix.c:481 unix2dos.c:498 +#, c-format +msgid "using %s as temporary file\n" +msgstr "%s wordt als tijdelijk bestand gebruikt\n" + +#: dos2unix.c:610 unix2dos.c:627 +#, c-format +msgid "Failed to change the permissions of temporary output file %s: %s\n" +msgstr "" +"Niet gelukt om de permissies van tijdelijk uitvoerbestand %s te wijzigen: " +"%s\n" + +#: dos2unix.c:629 unix2dos.c:646 +#, c-format +msgid "Failed to change the owner and group of temporary output file %s: %s\n" +msgstr "" +"Niet gelukt om de eigenaar en groep van tijdelijk uitvoerbestand %s te " +"wijzigen: %s\n" + +#: dos2unix.c:682 unix2dos.c:699 +#, c-format +msgid "problems resolving symbolic link '%s'\n" +msgstr "problemen met het herleiden van symbolische koppeling '%s'\n" + +#: dos2unix.c:683 dos2unix.c:717 unix2dos.c:700 unix2dos.c:734 +#, c-format +msgid " output file remains in '%s'\n" +msgstr " uitvoerbestand blijft in '%s'\n" + +#: dos2unix.c:712 unix2dos.c:729 +#, c-format +msgid "problems renaming '%s' to '%s': %s\n" +msgstr "problemen met hernoemen van '%s' naar '%s': %s\n" + +#: dos2unix.c:715 unix2dos.c:732 +#, c-format +msgid " which is the target of symbolic link '%s'\n" +msgstr " welke het doel is van symbolische koppeling '%s'\n" + +#: dos2unix.c:807 unix2dos.c:824 +msgid "error: Value of environment variable DOS2UNIX_LOCALEDIR is too long.\n" +msgstr "fout: Waarde van omgevingsvariabele DOS2UNIX_LOCALEDIR is te lang.\n" + +#: dos2unix.c:904 dos2unix.c:935 unix2dos.c:921 unix2dos.c:952 +#, c-format +msgid "active code page: %d\n" +msgstr "actieve code tabel: %d\n" + +#: dos2unix.c:945 unix2dos.c:962 +#, c-format +msgid "invalid %s conversion mode specified\n" +msgstr "ongeldige %s conversie modus gespecificeerd\n" + +#: dos2unix.c:955 unix2dos.c:972 +#, c-format +msgid "option '%s' requires an argument\n" +msgstr "optie '%s' heeft een argument nodig\n" + +#: dos2unix.c:968 dos2unix.c:982 dos2unix.c:1176 unix2dos.c:985 unix2dos.c:999 +#: unix2dos.c:1199 +#, c-format +msgid "target of file %s not specified in new file mode\n" +msgstr "doel van bestand %s is niet gespecificeerd in 'nieuw bestand modus'\n" + +#: dos2unix.c:1012 dos2unix.c:1096 unix2dos.c:1029 unix2dos.c:1116 +#, c-format +msgid "Skipping %s, not a regular file.\n" +msgstr "%s wordt overgeslagen, omdat het geen regulier bestand is.\n" + +#: dos2unix.c:1019 unix2dos.c:1036 +#, c-format +msgid "Skipping %s, output file %s is a symbolic link.\n" +msgstr "" +"%s wordt overgeslagen, uitvoerbestand %s is een symbolische koppeling.\n" + +#: dos2unix.c:1026 dos2unix.c:1110 unix2dos.c:1043 unix2dos.c:1130 +#, c-format +msgid "Skipping symbolic link %s, target is not a regular file.\n" +msgstr "" +"Symbolische koppeling %s wordt overgeslagen, omdat het doel geen regulier " +"bestand is.\n" + +#: dos2unix.c:1033 unix2dos.c:1050 +#, c-format +msgid "Skipping %s, target of symbolic link %s is not a regular file.\n" +msgstr "" +"%s wordt overgeslagen, omdat het doel van symbolische koppeling %s geen " +"regulier bestand is.\n" + +#: dos2unix.c:1040 dos2unix.c:1117 unix2dos.c:1057 unix2dos.c:1137 +#, c-format +msgid "Skipping binary file %s\n" +msgstr "Binair bestand %s wordt overgeslagen\n" + +#: dos2unix.c:1047 dos2unix.c:1124 unix2dos.c:1064 unix2dos.c:1144 +#, c-format +msgid "code page %d is not supported.\n" +msgstr "codetabel %d wordt niet ondersteund.\n" + +#: dos2unix.c:1054 dos2unix.c:1131 unix2dos.c:1071 unix2dos.c:1151 +#, c-format +msgid "" +"Skipping UTF-16 file %s, the current locale character encoding is not " +"UTF-8.\n" +msgstr "" +"UTF-16 bestand %s wordt overgeslagen, de huidige lokale karakter codering is " +"niet UTF-8.\n" + +#: dos2unix.c:1061 dos2unix.c:1138 unix2dos.c:1078 unix2dos.c:1158 +#, c-format +msgid "Skipping UTF-16 file %s, the size of wchar_t is %d bytes.\n" +msgstr "" +"UTF-16 bestand %s wordt overgeslagen, de grootte van wchar_t is %d bytes.\n" + +#: dos2unix.c:1068 dos2unix.c:1145 unix2dos.c:1085 unix2dos.c:1165 +#, c-format +msgid "Skipping UTF-16 file %s, an UTF-16 conversion error occurred.\n" +msgstr "" +"UTF-16 bestand %s wordt overgeslagen, een UTF-16 conversie fout is " +"opgetreden.\n" + +#: dos2unix.c:1074 +#, c-format +msgid "converting file %s to file %s in Unix format ...\n" +msgstr "converteren bestand %s naar bestand %s in Unix formaat ...\n" + +#: dos2unix.c:1081 unix2dos.c:1101 +#, c-format +msgid "problems converting file %s to file %s\n" +msgstr "problemen met conversie van bestand %s naar bestand %s\n" + +#: dos2unix.c:1103 unix2dos.c:1123 +#, c-format +msgid "Skipping symbolic link %s.\n" +msgstr "Symbolische koppeling %s wordt overgeslagen.\n" + +#: dos2unix.c:1151 +#, c-format +msgid "converting file %s to Unix format ...\n" +msgstr "converteren bestand %s naar Unix formaat ...\n" + +#: dos2unix.c:1158 unix2dos.c:1181 +#, c-format +msgid "problems converting file %s\n" +msgstr "problemen met conversie van bestand %s\n" + +#: unix2dos.c:66 +msgid "" +"Copyright (C) 2009-2012 Erwin Waterlander\n" +"Copyright (C) 1994-1995 Benjamin Lin\n" +"All rights reserved.\n" +"\n" +msgstr "" + +#: unix2dos.c:1092 +#, c-format +msgid "converting file %s to file %s in Mac format ...\n" +msgstr "converteren bestand %s naar bestand %s in Mac formaat ...\n" + +#: unix2dos.c:1094 +#, c-format +msgid "converting file %s to file %s in DOS format ...\n" +msgstr "converteren bestand %s naar bestand %s in DOS formaat ...\n" + +#: unix2dos.c:1172 +#, c-format +msgid "converting file %s to Mac format ...\n" +msgstr "converteren bestand %s naar Mac formaat ...\n" + +#: unix2dos.c:1174 +#, c-format +msgid "converting file %s to DOS format ...\n" +msgstr "converteren bestand %s naar DOS formaat ...\n" + +#: common.c:167 +msgid "" +"Redistribution and use in source and binary forms, with or without\n" +"modification, are permitted provided that the following conditions\n" +"are met:\n" +"1. Redistributions of source code must retain the above copyright\n" +" notice, this list of conditions and the following disclaimer.\n" +"2. Redistributions in binary form must reproduce the above copyright\n" +" notice in the documentation and/or other materials provided with\n" +" the distribution.\n" +"\n" +"THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY\n" +"EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n" +"IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n" +"PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE\n" +"FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n" +"CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n" +"OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n" +"BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n" +"WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n" +"OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN\n" +"IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" +msgstr "" + +#: common.c:193 +#, c-format +msgid "" +"%s %s (%s)\n" +"Usage: %s [options] [file ...] [-n infile outfile ...]\n" +" -ascii convert only line breaks (default)\n" +" -iso conversion between DOS and ISO-8859-1 character set\n" +" -1252 Use Windows code page 1252 (Western European)\n" +" -437 Use DOS code page 437 (US) (default)\n" +" -850 Use DOS code page 850 (Western European)\n" +" -860 Use DOS code page 860 (Portuguese)\n" +" -863 Use DOS code page 863 (French Canadian)\n" +" -865 Use DOS code page 865 (Nordic)\n" +" -7 Convert 8 bit characters to 7 bit space\n" +" -c, --convmode conversion mode\n" +" convmode ascii, 7bit, iso, mac, default to ascii\n" +" -f, --force force conversion of binary files\n" +" -h, --help give this help\n" +" -k, --keepdate keep output file date\n" +" -L, --license display software license\n" +" -l, --newline add additional newline\n" +" -m, --add-bom add UTF-8 Byte Order Mark\n" +" -n, --newfile write to new file\n" +" infile original file in new file mode\n" +" outfile output file in new file mode\n" +" -o, --oldfile write to old file\n" +" file ... files to convert in old file mode\n" +" -q, --quiet quiet mode, suppress all warnings\n" +" always on in stdio mode\n" +" -s, --safe skip binary files (default)\n" +msgstr "" +"%s %s (%s)\n" +"Usage: %s [opties] [bestand ...] [-n invoerbestand uitvoerbestand ...]\n" +" -ascii converteer alleen regeleindes (standaard)\n" +" -iso conversie tussen DOS en ISO-8859-1 lettertekenreeks\n" +" -1252 Gebruik Windows codetabel 1252 (West-Europees)\n" +" -437 Gebruik DOS codetabel 437 (VS) (standaard)\n" +" -850 Gebruik DOS codetabel 850 (West-Europees)\n" +" -860 Gebruik DOS codetabel 860 (Portugees)\n" +" -863 Gebruik DOS codetabel 863 (Canadees Frans)\n" +" -865 Gebruik DOS codetabel 865 (Scandinavisch)\n" +" -7 Converteer 8 bit lettertekens naar 7 bit spatie\n" +" -c, --convmode conversiemodus\n" +" conversiemodus ascii, 7bit, iso, mac, standaard is ascii\n" +" -f, --force forceer conversie van binaire bestanden\n" +" -h, --help toon deze help tekst\n" +" -k, --keepdate behoud datum uitvoerbestand\n" +" -L, --license toon software licentie\n" +" -l, --newline voeg extra regeleinde toe\n" +" -m, --add-bom voeg UTF-8 Byte Order Mark toe\n" +" -n, --newfile schrijf naar nieuw bestand\n" +" invoerbestand origineel bestand in nieuw-bestand-modus\n" +" uitvoerbestand uitvoerbestand in nieuw-bestand-modus\n" +" -o, --oldfile overschrijf oud bestand\n" +" bestand ... te converteren bestanden in oud-bestand-modus\n" +" -q, --quiet stille werking, onderdruk alle waarschuwingen\n" +" altijd aan in stdio modus\n" +" -s, --safe sla binaire bestanden over (standaard)\n" + +#: common.c:223 +#, c-format +msgid "" +" -F, --follow-symlink follow symbolic links and convert the targets\n" +" -R, --replace-symlink replace symbolic links with converted files\n" +" (original target files remain unchanged)\n" +" -S, --skip-symlink keep symbolic links and targets unchanged (default)\n" +msgstr "" +" -F, --follow-symlink volg symbolische koppelingen en converteer de doelen\n" +" -R, --replace-symlink vervang symbolische koppelingen door geconverteerde " +"bestanden\n" +" (originele doelbestanden blijven ongewijzigd)\n" +" -S, --skip-symlink laat symbolische koppelingen en doelen ongewijzigd " +"(standaard)\n" + +#: common.c:229 +#, c-format +msgid " -V, --version display version number\n" +msgstr " -V, --version toon versie nummer\n" + +#: common.c:241 +msgid "DOS 16 bit version (WATCOMC).\n" +msgstr "DOS 16 bit versie (WATCOMC).\n" + +#: common.c:243 +msgid "DOS 16 bit version (TURBOC).\n" +msgstr "DOS 16 bit versie (TURBOC).\n" + +#: common.c:245 +msgid "DOS 32 bit version (WATCOMC).\n" +msgstr "DOS 32 bit versie (WATCOMC).\n" + +#: common.c:247 +msgid "DOS 32 bit version (DJGPP).\n" +msgstr "DOS 32 bit versie (DJGPP).\n" + +#: common.c:249 +msgid "MSYS version.\n" +msgstr "MSYS versie.\n" + +#: common.c:251 +msgid "Cygwin version.\n" +msgstr "Cygwin versie.\n" + +#: common.c:253 +msgid "Windows 64 bit version (MinGW-w64).\n" +msgstr "Windows 64 bit versie (MinGW-w64).\n" + +#: common.c:255 +msgid "Windows 32 bit version (WATCOMC).\n" +msgstr "Windows 32 bit versie (WATCOMC).\n" + +#: common.c:257 +msgid "Windows 32 bit version (MinGW).\n" +msgstr "Windows 32 bit versie (MinGW).\n" + +#: common.c:259 +msgid "OS/2 version.\n" +msgstr "OS/2 versie.\n" + +#: common.c:262 +msgid "With Unicode UTF-16 support.\n" +msgstr "Met Unicode UTF-16 ondersteuning.\n" + +#: common.c:264 +msgid "Without Unicode UTF-16 support.\n" +msgstr "Zonder Unicode UTF-16 ondersteuning.\n" + +#: common.c:267 +msgid "With native language support.\n" +msgstr "Met moedertaal ondersteuning.\n" diff --git a/querycp.c b/querycp.c new file mode 100644 index 0000000..82bf58c --- /dev/null +++ b/querycp.c @@ -0,0 +1,196 @@ +/* The code in this file is Public Domain */ + +#if (defined(__WATCOMC__) && defined(__NT__)) +# define WIN32 +#endif + +#ifdef DJGPP + +#include <dpmi.h> +#include <go32.h> +#include <stdio.h> + +/* + ---------------------------------------------------------------------- + Tuesday, May 5, 2009 1:40pm + rugxulo _AT_ gmail _DOT_ com + + This file is (obviously?) not copyrighted, "nenies proprajxo" !! + + Tested successfully on DR-DOS 7.03, FreeDOS 1.0++, and MS-DOS 6.22. + (Doesn't work on XP or Vista, though.) + ---------------------------------------------------------------------- + + unsigned short query_con_codepage(void); + + gets currently selected display CON codepage + + int 21h, 6601h ("chcp") needs NLSFUNC.EXE + COUNTRY.SYS, but many + obscure codepages (e.g. FD's cp853 from EGA.CPX (CPIX.ZIP) or + Kosta Kostis' cp913 from ISOLATIN.CPI (ISOCP101.ZIP) have no + relevant data inside COUNTRY.SYS. + + int 21h, 440Ch 6Ah only works in MS-DOS and DR-DOS (not FreeDOS) because + FreeDOS DISPLAY is an .EXE TSR, not a device driver, and hence doesn't + fully support IOCTL, so they use the undocumented int 2Fh, 0AD02h + (which doesn't work in DR-DOS!). But DR-DOS' DISPLAY doesn't respond + to the typical install check i.d. anyways. FreeDOS currently only + supports COUNTRY.SYS in their "unstable" kernel 2037, but at least + their KEYB, "gxoje", supports cp853 too (thanks, Henrique!). + + P.S. For MS or DR: ren ega.cpx *.com ; upx -d ega.com ; ren ega.com *.cpi + + ADDENDUM (2011): + Latest "stable" FreeDOS kernel is 2040, it now includes COUNTRY.SYS + support by default, but NLSFUNC (CHCP) 'system code page' support is + partially unimplemented (lacking some int 2Fh calls, yet Eduardo + Casino didn't seem too worried, so I dunno, nag him if necessary, + heh). + ---------------------------------------------------------------------- +*/ + +unsigned short query_con_codepage(void) { + __dpmi_regs regs; + + unsigned short param_block[2] = { 0, 437 }; + + regs.d.eax = 0x440C; /* GENERIC IO FOR HANDLES */ + regs.d.ebx = 1; /* STDOUT */ + regs.d.ecx = 0x036A; /* 3 = CON, 0x6A = QUERY SELECTED CP */ + regs.x.ds = __tb >> 4; /* using transfer buffer for low mem. */ + regs.x.dx = __tb & 0x0F; /* (suggested by DJGPP FAQ, hi Eli!) */ + regs.x.flags |= 1; /* preset carry for potential failure */ + __dpmi_int (0x21, ®s); + + if (!(regs.x.flags & 1)) /* if succeed (carry flag not set) */ + dosmemget( __tb, 4, param_block); + else { /* (undocumented method) */ + regs.x.ax = 0xAD02; /* 440C -> MS-DOS or DR-DOS only */ + regs.x.bx = 0xFFFE; /* AD02 -> MS-DOS or FreeDOS only */ + regs.x.flags |= 1; + __dpmi_int(0x2F, ®s); + + if ((!(regs.x.flags & 1)) && (regs.x.bx < 0xFFFE)) + param_block[1] = regs.x.bx; + } + + return param_block[1]; +} +#elif defined(__WATCOMC__) && defined(__I86__) /* Watcom C, 16 bit Intel */ + +/* rugxulo _AT_ gmail _DOT_ com */ + +#include <stdio.h> +#include <dos.h> +#include <i86.h> + +unsigned short query_con_codepage(void) { + union REGS regs; + unsigned short param_block[2] = { 0, 437 }; + + regs.x.ax = 0x440C; /* GENERIC IO FOR HANDLES */ + regs.x.bx = 1; /* STDOUT */ + regs.x.cx = 0x036A; /* 3 = CON, 0x6A = QUERY SELECTED CP */ + regs.x.dx = (unsigned short)param_block; + regs.x.cflag |= 1; /* preset carry for potential failure */ + int86(0x21, ®s, ®s); + + if (regs.x.cflag) /* if not succeed (carry flag set) */ + { + regs.x.ax = 0xAD02; /* 440C -> MS-DOS or DR-DOS only */ + regs.x.bx = 0xFFFE; /* AD02 -> MS-DOS or FreeDOS only */ + regs.x.cflag |= 1; + int86(0x2F, ®s, ®s); + } + + if ((!(regs.x.cflag)) && (regs.x.bx < 0xFFFE)) + param_block[1] = regs.x.bx; + + return param_block[1]; + +} + +#elif defined(__WATCOMC__) && defined(__DOS__) /* Watcom C, 32 bit DOS */ + +/* rugxulo _AT_ gmail _DOT_ com */ + +#include <stdio.h> +#include <dos.h> +#include <i86.h> + +unsigned short query_con_codepage(void) { + union REGS regs; + unsigned short param_block[2] = { 0, 437 }; + + regs.x.eax = 0x440C; /* GENERIC IO FOR HANDLES */ + regs.x.ebx = 1; /* STDOUT */ + regs.x.ecx = 0x036A; /* 3 = CON, 0x6A = QUERY SELECTED CP */ + regs.x.edx = (unsigned short)param_block; + regs.x.cflag |= 1; /* preset carry for potential failure */ + int386(0x21, ®s, ®s); + + if (regs.x.cflag) /* if not succeed (carry flag set) */ + { + regs.x.eax = 0xAD02; /* 440C -> MS-DOS or DR-DOS only */ + regs.x.ebx = 0xFFFE; /* AD02 -> MS-DOS or FreeDOS only */ + regs.x.cflag |= 1; + int386(0x2F, ®s, ®s); + } + + if ((!(regs.x.cflag)) && (regs.x.ebx < 0xFFFE)) + param_block[1] = regs.x.ebx; + + return param_block[1]; + +} + + +#elif defined (WIN32) && !defined(__CYGWIN__) /* Windows, not Cygwin */ + +/* Erwin Waterlander */ + +#include <windows.h> +unsigned short query_con_codepage(void) { + + /* Dos2unix is modelled after dos2unix under SunOS/Solaris. + * The original dos2unix ISO mode on SunOS supported code + * pages CP437, CP850, CP860, CP863, and CP865, which + * are DOS code pages. Therefore we request here the DOS + * code page of the Console. The DOS code page is used + * by DOS programs, for instance text editor 'edit'. + */ + + /* Get the console's DOS code page */ + return((unsigned short)GetConsoleOutputCP()); + + /* Get the system's ANSI code page */ + /* return((unsigned short)GetACP()); */ + +} + +#elif defined (__OS2__) /* OS/2 Warp */ + +#define INCL_DOS +#include <os2.h> + +unsigned short query_con_codepage(void) { + ULONG cp[3]; + ULONG cplen; + + DosQueryCp(sizeof(cp), cp, &cplen); + return((unsigned short)cp[0]); +} + +#else /* Unix, other */ +unsigned short query_con_codepage(void) { + return(0); +} +#endif + +#ifdef TEST +int main() { + printf("\nCP%u\n",query_con_codepage() ); /* should be same result as */ + return 0; /* "mode con cp /status" */ +} +#endif + diff --git a/querycp.h b/querycp.h new file mode 100644 index 0000000..7264d2b --- /dev/null +++ b/querycp.h @@ -0,0 +1,3 @@ +/* The code in this file code is Public Domain */ + +unsigned short query_con_codepage(void); diff --git a/unix2dos.c b/unix2dos.c new file mode 100644 index 0000000..7088d02 --- /dev/null +++ b/unix2dos.c @@ -0,0 +1,1204 @@ +/* + * Name: unix2dos + * Documentation: + * Convert lf ('\x0a') characters in a file to cr lf ('\x0d' '\x0a') + * combinations. + * + * The dos2unix package is distributed under FreeBSD style license. + * See also http://www.freebsd.org/copyright/freebsd-license.html + * -------- + * + * Copyright (C) 2009-2012 Erwin Waterlander + * Copyright (C) 1994-1995 Benjamin Lin. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice in the documentation and/or other materials provided with + * the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * == 1.0 == 1989.10.04 == John Birchfield (jb@koko.csustan.edu) + * == 1.1 == 1994.12.20 == Benjamin Lin (blin@socs.uts.edu.au) + * Cleaned up for Borland C/C++ 4.02 + * == 1.2 == 1995.03.09 == Benjamin Lin (blin@socs.uts.edu.au) + * Fixed minor typo error + * == 1.3 == 1995.03.16 == Benjamin Lin (blin@socs.uts.edu.au) + * Modified to more conform to UNIX style. + * == 2.0 == 1995.03.19 == Benjamin Lin (blin@socs.uts.edu.au) + * Rewritten from scratch. + * == 2.2 == 1995.03.30 == Benjamin Lin (blin@socs.uts.edu.au) + * Conversion from SunOS charset implemented. + * + * See ChangeLog.txt for complete version history. + * + */ + + +/* #define DEBUG 1 */ + +#include "common.h" +#include "unix2dos.h" +#include "querycp.h" +#ifdef D2U_UNICODE +#ifndef MSDOS /* Unix, Cygwin */ +# include <langinfo.h> +#endif +#endif + +void PrintLicense(void) +{ + fprintf(stderr, "%s", _("\ +Copyright (C) 2009-2012 Erwin Waterlander\n\ +Copyright (C) 1994-1995 Benjamin Lin\n\ +All rights reserved.\n\n")); + PrintBSDLicense(); +} + +#ifdef D2U_UNICODE +void AddDOSNewLineW(FILE* ipOutF, CFlag *ipFlag, wint_t CurChar, wint_t PrevChar) +{ + if (ipFlag->NewLine) { /* add additional CR-LF? */ + /* Don't add line ending if it is a DOS line ending. Only in case of Unix line ending. */ + if ((CurChar == 0x0a) && (PrevChar != 0x0d)) { + d2u_putwc(0x0d, ipOutF, ipFlag); + d2u_putwc(0x0a, ipOutF, ipFlag); + } + } +} +#endif + +void AddDOSNewLine(FILE* ipOutF, CFlag *ipFlag, int CurChar, int PrevChar) +{ + if (ipFlag->NewLine) { /* add additional CR-LF? */ + /* Don't add line ending if it is a DOS line ending. Only in case of Unix line ending. */ + if ((CurChar == '\x0a') && (PrevChar != '\x0d')) { + fputc('\x0d', ipOutF); + fputc('\x0a', ipOutF); + } + } +} + +/* converts stream ipInF to DOS format text and write to stream ipOutF + * RetVal: 0 if success + * -1 otherwise + */ +#ifdef D2U_UNICODE +int ConvertUnixToDosW(FILE* ipInF, FILE* ipOutF, CFlag *ipFlag, char *progname) +{ + int RetVal = 0; + wint_t TempChar; + wint_t PreviousChar = 0; + + ipFlag->status = 0; + + /* LF -> CR-LF */ + /* CR-LF -> CR-LF, in case the input file is a DOS text file */ + /* \x0a = Newline/Line Feed (LF) */ + /* \x0d = Carriage Return (CR) */ + + switch (ipFlag->FromToMode) + { + case FROMTO_UNIX2DOS: /* unix2dos */ + while ((TempChar = d2u_getwc(ipInF, ipFlag->bomtype)) != WEOF) { /* get character */ + if ((ipFlag->Force == 0) && + (TempChar < 32) && + (TempChar != 0x0a) && /* Not an LF */ + (TempChar != 0x0d) && /* Not a CR */ + (TempChar != 0x09) && /* Not a TAB */ + (TempChar != 0x0c)) { /* Not a form feed */ + RetVal = -1; + ipFlag->status |= BINARY_FILE ; + break; + } + if (TempChar == 0x0a) + { + d2u_putwc(0x0d, ipOutF, ipFlag); /* got LF, put CR */ + } else { + if (TempChar == 0x0d) /* got CR */ + { + if ((TempChar = d2u_getwc(ipInF, ipFlag->bomtype)) == WEOF) /* get next char */ + TempChar = 0x0d; /* Read error, or end of file. */ + else + { + d2u_putwc(0x0d, ipOutF, ipFlag); /* put CR */ + PreviousChar = 0x0d; + } + } + } + if (d2u_putwc(TempChar, ipOutF, ipFlag) == WEOF) + { + RetVal = -1; + if (!ipFlag->Quiet) + { + if (!(ipFlag->status & UNICODE_CONVERSION_ERROR)) + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, "%s", _("can not write to output file\n")); + } + } + break; + } else { + AddDOSNewLineW( ipOutF, ipFlag, TempChar, PreviousChar); + } + PreviousChar = TempChar; + } + break; + case FROMTO_UNIX2MAC: /* unix2mac */ + while ((TempChar = d2u_getwc(ipInF, ipFlag->bomtype)) != WEOF) { + if ((ipFlag->Force == 0) && + (TempChar < 32) && + (TempChar != 0x0a) && /* Not an LF */ + (TempChar != 0x0d) && /* Not a CR */ + (TempChar != 0x09) && /* Not a TAB */ + (TempChar != 0x0c)) { /* Not a form feed */ + RetVal = -1; + ipFlag->status |= BINARY_FILE ; + break; + } + if ((TempChar != 0x0a)) /* Not an LF */ + { + if(d2u_putwc(TempChar, ipOutF, ipFlag) == WEOF){ + RetVal = -1; + if (!ipFlag->Quiet) + { + if (!(ipFlag->status & UNICODE_CONVERSION_ERROR)) + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, "%s", _("can not write to output file\n")); + } + } + break; + } + PreviousChar = TempChar; + } + else{ + /* TempChar is an LF */ + /* Don't touch this delimiter if it's a CR,LF pair. */ + if ( PreviousChar == 0x0d ) { + if (d2u_putwc(0x0a, ipOutF, ipFlag) == WEOF) /* CR,LF pair. Put LF */ + { + RetVal = -1; + if (!ipFlag->Quiet) + { + if (!(ipFlag->status & UNICODE_CONVERSION_ERROR)) + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, "%s", _("can not write to output file\n")); + } + } + break; + } + PreviousChar = TempChar; + continue; + } + PreviousChar = TempChar; + if (d2u_putwc(0x0d, ipOutF, ipFlag) == WEOF) /* Unix line end (LF). Put CR */ + { + RetVal = -1; + if (!ipFlag->Quiet) + { + if (!(ipFlag->status & UNICODE_CONVERSION_ERROR)) + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, "%s", _("can not write to output file\n")); + } + } + break; + } + if (ipFlag->NewLine) { /* add additional CR? */ + d2u_putwc(0x0d, ipOutF, ipFlag); + } + } + } + break; + default: /* unknown FromToMode */ + ; +#if DEBUG + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("program error, invalid conversion mode %d\n"),ipFlag->FromToMode); + exit(1); +#endif + } + return RetVal; +} +#endif + +/* converts stream ipInF to DOS format text and write to stream ipOutF + * RetVal: 0 if success + * -1 otherwise + */ +int ConvertUnixToDos(FILE* ipInF, FILE* ipOutF, CFlag *ipFlag, char *progname) +{ + int RetVal = 0; + int TempChar; + int PreviousChar = 0; + int *ConvTable; + + ipFlag->status = 0; + + switch (ipFlag->ConvMode) + { + case CONVMODE_ASCII: /* ascii */ + ConvTable = U2DAsciiTable; + break; + case CONVMODE_7BIT: /* 7bit */ + ConvTable = U2D7BitTable; + break; + case CONVMODE_437: /* iso */ + ConvTable = U2DIso437Table; + break; + case CONVMODE_850: /* iso */ + ConvTable = U2DIso850Table; + break; + case CONVMODE_860: /* iso */ + ConvTable = U2DIso860Table; + break; + case CONVMODE_863: /* iso */ + ConvTable = U2DIso863Table; + break; + case CONVMODE_865: /* iso */ + ConvTable = U2DIso865Table; + break; + case CONVMODE_1252: /* iso */ + ConvTable = U2DIso1252Table; + break; + default: /* unknown convmode */ + ipFlag->status |= WRONG_CODEPAGE ; + return(-1); + } + if ((ipFlag->ConvMode > 1) && (!ipFlag->Quiet)) /* not ascii or 7bit */ + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("using code page %d.\n"), ipFlag->ConvMode); + } + + /* LF -> CR-LF */ + /* CR-LF -> CR-LF, in case the input file is a DOS text file */ + /* \x0a = Newline/Line Feed (LF) */ + /* \x0d = Carriage Return (CR) */ + + switch (ipFlag->FromToMode) + { + case FROMTO_UNIX2DOS: /* unix2dos */ + while ((TempChar = fgetc(ipInF)) != EOF) { /* get character */ + if ((ipFlag->Force == 0) && + (TempChar < 32) && + (TempChar != '\x0a') && /* Not an LF */ + (TempChar != '\x0d') && /* Not a CR */ + (TempChar != '\x09') && /* Not a TAB */ + (TempChar != '\x0c')) { /* Not a form feed */ + RetVal = -1; + ipFlag->status |= BINARY_FILE ; + break; + } + if (TempChar == '\x0a') + { + fputc('\x0d', ipOutF); /* got LF, put CR */ + } else { + if (TempChar == '\x0d') /* got CR */ + { + if ((TempChar = fgetc(ipInF)) == EOF) /* get next char */ + TempChar = '\x0d'; /* Read error, or end of file. */ + else + { + fputc('\x0d', ipOutF); /* put CR */ + PreviousChar = '\x0d'; + } + } + } + if (fputc(ConvTable[TempChar], ipOutF) == EOF) + { + RetVal = -1; + if (!ipFlag->Quiet) + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, "%s", _("can not write to output file\n")); + } + break; + } else { + AddDOSNewLine( ipOutF, ipFlag, TempChar, PreviousChar); + } + PreviousChar = TempChar; + } + break; + case FROMTO_UNIX2MAC: /* unix2mac */ + while ((TempChar = fgetc(ipInF)) != EOF) { + if ((ipFlag->Force == 0) && + (TempChar < 32) && + (TempChar != '\x0a') && /* Not an LF */ + (TempChar != '\x0d') && /* Not a CR */ + (TempChar != '\x09') && /* Not a TAB */ + (TempChar != '\x0c')) { /* Not a form feed */ + RetVal = -1; + ipFlag->status |= BINARY_FILE ; + break; + } + if ((TempChar != '\x0a')) /* Not an LF */ + { + if(fputc(ConvTable[TempChar], ipOutF) == EOF){ + RetVal = -1; + if (!ipFlag->Quiet) + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, "%s", _("can not write to output file\n")); + } + break; + } + PreviousChar = TempChar; + } + else{ + /* TempChar is an LF */ + /* Don't touch this delimiter if it's a CR,LF pair. */ + if ( PreviousChar == '\x0d' ) { + if (fputc('\x0a', ipOutF) == EOF) /* CR,LF pair. Put LF */ + { + RetVal = -1; + if (!ipFlag->Quiet) + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, "%s", _("can not write to output file\n")); + } + break; + } + PreviousChar = TempChar; + continue; + } + PreviousChar = TempChar; + if (fputc('\x0d', ipOutF) == EOF) /* Unix line end (LF). Put CR */ + { + RetVal = -1; + if (!ipFlag->Quiet) + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, "%s", _("can not write to output file\n")); + } + break; + } + if (ipFlag->NewLine) { /* add additional CR? */ + fputc('\x0d', ipOutF); + } + } + } + break; + default: /* unknown FromToMode */ + ; +#if DEBUG + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("program error, invalid conversion mode %d\n"),ipFlag->FromToMode); + exit(1); +#endif + } + return RetVal; +} + +/* convert file ipInFN to DOS format text and write to file ipOutFN + * RetVal: 0 if success + * -1 otherwise + */ +int ConvertUnixToDosNewFile(char *ipInFN, char *ipOutFN, CFlag *ipFlag, char *progname) +{ + int RetVal = 0; + FILE *InF = NULL; + FILE *TempF = NULL; + char *TempPath; + char *errstr; + struct stat StatBuf; + struct utimbuf UTimeBuf; +#ifndef NO_CHMOD + mode_t mask; +#endif +#ifdef NO_MKSTEMP + FILE* fd; +#else + int fd; +#endif + char *TargetFN = NULL; + int ResolveSymlinkResult = 0; + + ipFlag->status = 0 ; + + /* Test if output file is a symbolic link */ + if (symbolic_link(ipOutFN) && !ipFlag->Follow) + { + ipFlag->status |= OUTPUTFILE_SYMLINK ; + /* Not a failure, skipping input file according spec. (keep symbolic link unchanged) */ + return -1; + } + + /* Test if input file is a regular file or symbolic link */ + if (regfile(ipInFN, 1, ipFlag, progname)) + { + ipFlag->status |= NO_REGFILE ; + /* Not a failure, skipping non-regular input file according spec. */ + return -1; + } + + /* Test if input file target is a regular file */ + if (symbolic_link(ipInFN) && regfile_target(ipInFN, ipFlag,progname)) + { + ipFlag->status |= INPUT_TARGET_NO_REGFILE ; + /* Not a failure, skipping non-regular input file according spec. */ + return -1; + } + + /* Test if output file target is a regular file */ + if (symbolic_link(ipOutFN) && (ipFlag->Follow == SYMLINK_FOLLOW) && regfile_target(ipOutFN, ipFlag,progname)) + { + ipFlag->status |= OUTPUT_TARGET_NO_REGFILE ; + /* Failure, input is regular, cannot produce output. */ + if (!ipFlag->error) ipFlag->error = 1; + return -1; + } + + /* retrieve ipInFN file date stamp */ + if (stat(ipInFN, &StatBuf)) + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: %s: %s\n", progname, ipInFN, errstr); + } + RetVal = -1; + } + +#ifdef NO_MKSTEMP + if((fd = MakeTempFileFrom(ipOutFN, &TempPath))==NULL) { +#else + if((fd = MakeTempFileFrom (ipOutFN, &TempPath)) < 0) { +#endif + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("Failed to open temporary output file: %s\n"), errstr); + } + RetVal = -1; + } + +#if DEBUG + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("using %s as temporary file\n"), TempPath); +#endif + + /* can open in file? */ + if (!RetVal) + { + InF=OpenInFile(ipInFN); + if (InF == NULL) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: %s: %s\n", progname, ipInFN, errstr); + RetVal = -1; + } + } + + /* can open output file? */ + if ((!RetVal) && (InF)) + { +#ifdef NO_MKSTEMP + if ((TempF=fd) == NULL) + { +#else + if ((TempF=OpenOutFile(fd)) == NULL) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: %s\n", progname, errstr); +#endif + fclose (InF); + InF = NULL; + RetVal = -1; + } + } + + InF = read_bom(InF, &ipFlag->bomtype); + +#ifdef D2U_UNICODE +#ifndef MSDOS /* Unix, Cygwin */ + if ((ipFlag->bomtype == FILE_UTF16LE) || (ipFlag->bomtype == FILE_UTF16BE)) + { + if (strcmp(nl_langinfo(CODESET), "UTF-8") != 0) + { + /* Don't convert UTF-16 files when the locale encoding is not UTF-8 + * to prevent loss of characters. */ + ipFlag->status |= LOCALE_NOT_UTF8 ; + if (!ipFlag->error) ipFlag->error = 1; + RetVal = -1; + } + } +#endif +#if !defined(WIN32) && !defined(__CYGWIN__) /* Not Windows or Cygwin */ + if ((ipFlag->bomtype == FILE_UTF16LE) || (ipFlag->bomtype == FILE_UTF16BE)) + { + if (sizeof(wchar_t) < 4) + { + /* A decoded UTF-16 surrogate pair must fit in a wchar_t */ + ipFlag->status |= WCHAR_T_TOO_SMALL ; + if (!ipFlag->error) ipFlag->error = 1; + RetVal = -1; + } + } +#endif +#endif + + if ((ipFlag->add_bom) || (ipFlag->bomtype > 0)) + fprintf(TempF, "%s", "\xEF\xBB\xBF"); /* UTF-8 BOM */ + + /* Turn off ISO and 7-bit conversion for Unicode text files */ + if (ipFlag->bomtype > 0) + ipFlag->ConvMode = CONVMODE_ASCII; + + /* conversion sucessful? */ +#ifdef D2U_UNICODE + if ((ipFlag->bomtype == FILE_UTF16LE) || (ipFlag->bomtype == FILE_UTF16BE)) + { + if ((!RetVal) && (ConvertUnixToDosW(InF, TempF, ipFlag, progname))) + RetVal = -1; + if (ipFlag->status & UNICODE_CONVERSION_ERROR) + { + if (!ipFlag->error) ipFlag->error = 1; + RetVal = -1; + } + } else { + if ((!RetVal) && (ConvertUnixToDos(InF, TempF, ipFlag, progname))) + RetVal = -1; + } +#else + if ((!RetVal) && (ConvertUnixToDos(InF, TempF, ipFlag, progname))) + RetVal = -1; +#endif + + /* can close in file? */ + if ((InF) && (fclose(InF) == EOF)) + RetVal = -1; + + /* can close output file? */ + if ((TempF) && (fclose(TempF) == EOF)) + RetVal = -1; + +#ifdef NO_MKSTEMP + if(fd!=NULL) + fclose(fd); +#else + if(fd>=0) + close(fd); +#endif + +#ifndef NO_CHMOD + if (!RetVal) + { + if (ipFlag->NewFile == 0) /* old file mode */ + { + RetVal = chmod (TempPath, StatBuf.st_mode); /* set original permissions */ + } + else + { + mask = umask(0); /* get process's umask */ + umask(mask); /* set umask back to original */ + RetVal = chmod(TempPath, StatBuf.st_mode & ~mask); /* set original permissions, minus umask */ + } + + if (RetVal) + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("Failed to change the permissions of temporary output file %s: %s\n"), TempPath, errstr); + } + } + } +#endif + +#ifndef NO_CHOWN + if (!RetVal && (ipFlag->NewFile == 0)) /* old file mode */ + { + /* Change owner and group of the the tempory output file to the original file's uid and gid. */ + /* Required when a different user (e.g. root) has write permission on the original file. */ + /* Make sure that the original owner can still access the file. */ + if (chown(TempPath, StatBuf.st_uid, StatBuf.st_gid)) + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("Failed to change the owner and group of temporary output file %s: %s\n"), TempPath, errstr); + } + RetVal = -1; + } + } +#endif + + if ((!RetVal) && (ipFlag->KeepDate)) + { + UTimeBuf.actime = StatBuf.st_atime; + UTimeBuf.modtime = StatBuf.st_mtime; + /* can change output file time to in file time? */ + if (utime(TempPath, &UTimeBuf) == -1) + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: %s: %s\n", progname, TempPath, errstr); + } + RetVal = -1; + } + } + + /* any error? cleanup the temp file */ + if (RetVal && (TempPath != NULL)) + { + if (unlink(TempPath) && (errno != ENOENT)) + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: %s: %s\n", progname, TempPath, errstr); + } + RetVal = -1; + } + } + + /* If output file is a symbolic link, optional resolve the link and modify */ + /* the target, instead of removing the link and creating a new regular file */ + TargetFN = ipOutFN; + if (symbolic_link(ipOutFN) && !RetVal) + { + ResolveSymlinkResult = 0; /* indicates that TargetFN need not be freed */ + if (ipFlag->Follow == SYMLINK_FOLLOW) + { + ResolveSymlinkResult = ResolveSymbolicLink(ipOutFN, &TargetFN, ipFlag, progname); + if (ResolveSymlinkResult < 0) + { + if (!ipFlag->Quiet) + { + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("problems resolving symbolic link '%s'\n"), ipOutFN); + fprintf(stderr, _(" output file remains in '%s'\n"), TempPath); + } + RetVal = -1; + } + } + } + + /* can rename temporary file to output file? */ + if (!RetVal) + { +#ifdef NEED_REMOVE + if (unlink(TargetFN) && (errno != ENOENT)) + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: %s: %s\n", progname, TargetFN, errstr); + } + RetVal = -1; + } +#endif + if (rename(TempPath, TargetFN) == -1) + { + if (!ipFlag->Quiet) + { + ipFlag->error = errno; + errstr = strerror(errno); + fprintf(stderr, "%s: ", progname); + fprintf(stderr, _("problems renaming '%s' to '%s': %s\n"), TempPath, TargetFN, errstr); +#ifdef S_ISLNK + if (ResolveSymlinkResult > 0) + fprintf(stderr, _(" which is the target of symbolic link '%s'\n"), ipOutFN); +#endif + fprintf(stderr, _(" output file remains in '%s'\n"), TempPath); + } + RetVal = -1; + } + + if (ResolveSymlinkResult > 0) + free(TargetFN); + } + free(TempPath); + return RetVal; +} + +/* convert stdin to DOS format text and write to stdout + * RetVal: 0 if success + * -1 otherwise + */ +int ConvertUnixToDosStdio(CFlag *ipFlag, char *progname) +{ + ipFlag->NewFile = 1; + ipFlag->Quiet = 1; + ipFlag->KeepDate = 0; + ipFlag->Force = 1; + +#if defined(WIN32) && !defined(__CYGWIN__) + + /* stdin and stdout are by default text streams. We need + * to set them to binary mode. Otherwise an LF will + * automatically be converted to CR-LF on DOS/Windows. + * Erwin */ + + /* 'setmode' was deprecated by MicroSoft + * since Visual C++ 2005. Use '_setmode' instead. */ + + _setmode(fileno(stdout), O_BINARY); + _setmode(fileno(stdin), O_BINARY); +#elif defined(MSDOS) || defined(__CYGWIN__) || defined(__OS2__) + setmode(fileno(stdout), O_BINARY); + setmode(fileno(stdin), O_BINARY); +#endif + + read_bom(stdin, &ipFlag->bomtype); + + if ((ipFlag->add_bom) || (ipFlag->bomtype > 0)) + fprintf(stdout, "%s", "\xEF\xBB\xBF"); /* UTF-8 BOM */ + +#ifdef D2U_UNICODE + if ((ipFlag->bomtype == FILE_UTF16LE) || (ipFlag->bomtype == FILE_UTF16BE)) + { + return (ConvertUnixToDosW(stdin, stdout, ipFlag, progname)); + } else { + return (ConvertUnixToDos(stdin, stdout, ipFlag, progname)); + } +#else + return (ConvertUnixToDos(stdin, stdout, ipFlag, progname)); +#endif +} + + +int main (int argc, char *argv[]) +{ + /* variable declarations */ + char progname[9]; + int ArgIdx; + int CanSwitchFileMode; + int ShouldExit; + int RetVal = 0; + int process_options = 1; + CFlag *pFlag; + char *ptr; +#ifdef ENABLE_NLS + char localedir[1024]; +#endif +# ifdef __MINGW64__ + int _dowildcard = -1; /* enable wildcard expansion for Win64 */ +# endif + + progname[8] = '\0'; + strcpy(progname,"unix2dos"); + +#ifdef ENABLE_NLS + ptr = getenv("DOS2UNIX_LOCALEDIR"); + if (ptr == NULL) + strcpy(localedir,LOCALEDIR); + else + { + if (strlen(ptr) < sizeof(localedir)) + strcpy(localedir,ptr); + else + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, "%s", _("error: Value of environment variable DOS2UNIX_LOCALEDIR is too long.\n")); + strcpy(localedir,LOCALEDIR); + } + } + + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, localedir); + textdomain (PACKAGE); +#endif + + + /* variable initialisations */ + ArgIdx = 0; + CanSwitchFileMode = 1; + ShouldExit = 0; + pFlag = (CFlag*)malloc(sizeof(CFlag)); + pFlag->NewFile = 0; + pFlag->Quiet = 0; + pFlag->KeepDate = 0; + pFlag->ConvMode = CONVMODE_ASCII; /* default ascii */ + pFlag->FromToMode = FROMTO_UNIX2DOS; /* default unix2dos */ + pFlag->NewLine = 0; + pFlag->Force = 0; + pFlag->Follow = SYMLINK_SKIP; + pFlag->status = 0; + pFlag->stdio_mode = 1; + pFlag->error = 0; +#ifdef D2U_UNICODE + pFlag->bomtype = FILE_MBS; +#endif + pFlag->add_bom = 0; + + if ( ((ptr=strrchr(argv[0],'/')) == NULL) && ((ptr=strrchr(argv[0],'\\')) == NULL) ) + ptr = argv[0]; + else + ptr++; + + if ((strcmpi("unix2mac", ptr) == 0) || (strcmpi("unix2mac.exe", ptr) == 0)) + { + pFlag->FromToMode = FROMTO_UNIX2MAC; + strcpy(progname,"unix2mac"); + } + + while ((++ArgIdx < argc) && (!ShouldExit)) + { + /* is it an option? */ + if ((argv[ArgIdx][0] == '-') && process_options) + { + /* an option */ + if (strcmp(argv[ArgIdx],"--") == 0) + process_options = 0; + else if ((strcmp(argv[ArgIdx],"-h") == 0) || (strcmp(argv[ArgIdx],"--help") == 0)) + { + PrintUsage(progname); + return(pFlag->error); + } + else if ((strcmp(argv[ArgIdx],"-k") == 0) || (strcmp(argv[ArgIdx],"--keepdate") == 0)) + pFlag->KeepDate = 1; + else if ((strcmp(argv[ArgIdx],"-f") == 0) || (strcmp(argv[ArgIdx],"--force") == 0)) + pFlag->Force = 1; + else if ((strcmp(argv[ArgIdx],"-s") == 0) || (strcmp(argv[ArgIdx],"--safe") == 0)) + pFlag->Force = 0; + else if ((strcmp(argv[ArgIdx],"-q") == 0) || (strcmp(argv[ArgIdx],"--quiet") == 0)) + pFlag->Quiet = 1; + else if ((strcmp(argv[ArgIdx],"-l") == 0) || (strcmp(argv[ArgIdx],"--newline") == 0)) + pFlag->NewLine = 1; + else if ((strcmp(argv[ArgIdx],"-m") == 0) || (strcmp(argv[ArgIdx],"--add-bom") == 0)) + pFlag->add_bom = 1; + else if ((strcmp(argv[ArgIdx],"-S") == 0) || (strcmp(argv[ArgIdx],"--skip-symlink") == 0)) + pFlag->Follow = SYMLINK_SKIP; + else if ((strcmp(argv[ArgIdx],"-F") == 0) || (strcmp(argv[ArgIdx],"--follow-symlink") == 0)) + pFlag->Follow = SYMLINK_FOLLOW; + else if ((strcmp(argv[ArgIdx],"-R") == 0) || (strcmp(argv[ArgIdx],"--replace-symlink") == 0)) + pFlag->Follow = SYMLINK_REPLACE; + else if ((strcmp(argv[ArgIdx],"-V") == 0) || (strcmp(argv[ArgIdx],"--version") == 0)) + { + PrintVersion(progname); +#ifdef ENABLE_NLS + PrintLocaledir(localedir); +#endif + return(pFlag->error); + } + else if ((strcmp(argv[ArgIdx],"-L") == 0) || (strcmp(argv[ArgIdx],"--license") == 0)) + { + PrintLicense(); + return(pFlag->error); + } + else if (strcmp(argv[ArgIdx],"-ascii") == 0) /* SunOS compatible options */ + pFlag->ConvMode = CONVMODE_ASCII; + else if (strcmp(argv[ArgIdx],"-7") == 0) + pFlag->ConvMode = CONVMODE_7BIT; + else if (strcmp(argv[ArgIdx],"-iso") == 0) + { + pFlag->ConvMode = (int)query_con_codepage(); + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr,_("active code page: %d\n"), pFlag->ConvMode); + } + if (pFlag->ConvMode < 2) + pFlag->ConvMode = CONVMODE_437; + } + else if (strcmp(argv[ArgIdx],"-437") == 0) + pFlag->ConvMode = CONVMODE_437; + else if (strcmp(argv[ArgIdx],"-850") == 0) + pFlag->ConvMode = CONVMODE_850; + else if (strcmp(argv[ArgIdx],"-860") == 0) + pFlag->ConvMode = CONVMODE_860; + else if (strcmp(argv[ArgIdx],"-863") == 0) + pFlag->ConvMode = CONVMODE_863; + else if (strcmp(argv[ArgIdx],"-865") == 0) + pFlag->ConvMode = CONVMODE_865; + else if (strcmp(argv[ArgIdx],"-1252") == 0) + pFlag->ConvMode = CONVMODE_1252; + else if ((strcmp(argv[ArgIdx],"-c") == 0) || (strcmp(argv[ArgIdx],"--convmode") == 0)) + { + if (++ArgIdx < argc) + { + if (strcmpi(argv[ArgIdx],"ascii") == 0) /* Benjamin Lin's legacy options */ + pFlag->ConvMode = CONVMODE_ASCII; + else if (strcmpi(argv[ArgIdx], "7bit") == 0) + pFlag->ConvMode = CONVMODE_7BIT; + else if (strcmpi(argv[ArgIdx], "iso") == 0) + { + pFlag->ConvMode = (int)query_con_codepage(); + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr,_("active code page: %d\n"), pFlag->ConvMode); + } + if (pFlag->ConvMode < 2) + pFlag->ConvMode = CONVMODE_437; + } + else if (strcmpi(argv[ArgIdx], "mac") == 0) + pFlag->FromToMode = FROMTO_UNIX2MAC; + else + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("invalid %s conversion mode specified\n"),argv[ArgIdx]); + pFlag->error = 1; + ShouldExit = 1; + pFlag->stdio_mode = 0; + } + } + else + { + ArgIdx--; + fprintf(stderr,"%s: ",progname); + fprintf(stderr,_("option '%s' requires an argument\n"),argv[ArgIdx]); + pFlag->error = 1; + ShouldExit = 1; + pFlag->stdio_mode = 0; + } + } + + else if ((strcmp(argv[ArgIdx],"-o") == 0) || (strcmp(argv[ArgIdx],"--oldfile") == 0)) + { + /* last convert not paired */ + if (!CanSwitchFileMode) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("target of file %s not specified in new file mode\n"), argv[ArgIdx-1]); + pFlag->error = 1; + ShouldExit = 1; + pFlag->stdio_mode = 0; + } + pFlag->NewFile = 0; + } + + else if ((strcmp(argv[ArgIdx],"-n") == 0) || (strcmp(argv[ArgIdx],"--newfile") == 0)) + { + /* last convert not paired */ + if (!CanSwitchFileMode) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("target of file %s not specified in new file mode\n"), argv[ArgIdx-1]); + pFlag->error = 1; + ShouldExit = 1; + pFlag->stdio_mode = 0; + } + pFlag->NewFile = 1; + } + else { /* wrong option */ + PrintUsage(progname); + ShouldExit = 1; + pFlag->error = 1; + pFlag->stdio_mode = 0; + } + } + else + { + pFlag->stdio_mode = 0; + /* not an option */ + if (pFlag->NewFile) + { + if (CanSwitchFileMode) + CanSwitchFileMode = 0; + else + { + RetVal = ConvertUnixToDosNewFile(argv[ArgIdx-1], argv[ArgIdx], pFlag, progname); + if (pFlag->status & NO_REGFILE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping %s, not a regular file.\n"), argv[ArgIdx-1]); + } + } else if (pFlag->status & OUTPUTFILE_SYMLINK) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping %s, output file %s is a symbolic link.\n"), argv[ArgIdx-1], argv[ArgIdx]); + } + } else if (pFlag->status & INPUT_TARGET_NO_REGFILE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping symbolic link %s, target is not a regular file.\n"), argv[ArgIdx-1]); + } + } else if (pFlag->status & OUTPUT_TARGET_NO_REGFILE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping %s, target of symbolic link %s is not a regular file.\n"), argv[ArgIdx-1], argv[ArgIdx]); + } + } else if (pFlag->status & BINARY_FILE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping binary file %s\n"), argv[ArgIdx-1]); + } + } else if (pFlag->status & WRONG_CODEPAGE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("code page %d is not supported.\n"), pFlag->ConvMode); + } + } else if (pFlag->status & LOCALE_NOT_UTF8) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping UTF-16 file %s, the current locale character encoding is not UTF-8.\n"), argv[ArgIdx-1]); + } + } else if (pFlag->status & WCHAR_T_TOO_SMALL) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping UTF-16 file %s, the size of wchar_t is %d bytes.\n"), argv[ArgIdx-1], (int)sizeof(wchar_t)); + } + } else if (pFlag->status & UNICODE_CONVERSION_ERROR) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping UTF-16 file %s, an UTF-16 conversion error occurred.\n"), argv[ArgIdx-1]); + } + } else { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + if (pFlag->FromToMode == FROMTO_UNIX2MAC) + fprintf(stderr, _("converting file %s to file %s in Mac format ...\n"), argv[ArgIdx-1], argv[ArgIdx]); + else + fprintf(stderr, _("converting file %s to file %s in DOS format ...\n"), argv[ArgIdx-1], argv[ArgIdx]); + } + if (RetVal) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("problems converting file %s to file %s\n"), argv[ArgIdx-1], argv[ArgIdx]); + } + } + } + CanSwitchFileMode = 1; + } + } + else + { + RetVal = ConvertUnixToDosNewFile(argv[ArgIdx], argv[ArgIdx], pFlag, progname); + if (pFlag->status & NO_REGFILE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping %s, not a regular file.\n"), argv[ArgIdx]); + } + } else if (pFlag->status & OUTPUTFILE_SYMLINK) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping symbolic link %s.\n"), argv[ArgIdx]); + } + } else if (pFlag->status & INPUT_TARGET_NO_REGFILE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping symbolic link %s, target is not a regular file.\n"), argv[ArgIdx]); + } + } else if (pFlag->status & BINARY_FILE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping binary file %s\n"), argv[ArgIdx]); + } + } else if (pFlag->status & WRONG_CODEPAGE) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("code page %d is not supported.\n"), pFlag->ConvMode); + } + } else if (pFlag->status & LOCALE_NOT_UTF8) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping UTF-16 file %s, the current locale character encoding is not UTF-8.\n"), argv[ArgIdx]); + } + } else if (pFlag->status & WCHAR_T_TOO_SMALL) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping UTF-16 file %s, the size of wchar_t is %d bytes.\n"), argv[ArgIdx], (int)sizeof(wchar_t)); + } + } else if (pFlag->status & UNICODE_CONVERSION_ERROR) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("Skipping UTF-16 file %s, an UTF-16 conversion error occurred.\n"), argv[ArgIdx]); + } + } else { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + if (pFlag->FromToMode == FROMTO_UNIX2MAC) + fprintf(stderr, _("converting file %s to Mac format ...\n"), argv[ArgIdx]); + else + fprintf(stderr, _("converting file %s to DOS format ...\n"), argv[ArgIdx]); + } + if (RetVal) + { + if (!pFlag->Quiet) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("problems converting file %s\n"), argv[ArgIdx]); + } + } + } + } + } + } + + /* no file argument, use stdin and stdout */ + if (pFlag->stdio_mode) + { + exit(ConvertUnixToDosStdio(pFlag, progname)); + } + + + if (!CanSwitchFileMode) + { + fprintf(stderr,"%s: ",progname); + fprintf(stderr, _("target of file %s not specified in new file mode\n"), argv[ArgIdx-1]); + pFlag->error = 1; + } + return (pFlag->error); +} + diff --git a/unix2dos.h b/unix2dos.h new file mode 100644 index 0000000..db31730 --- /dev/null +++ b/unix2dos.h @@ -0,0 +1,222 @@ +/* + * Copyright (C) 2009-2011 Erwin Waterlander + * Copyright (C) 1994-1995 Benjamin Lin. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice in the documentation and/or other materials provided with + * the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __UNIX2DOS_H +#define __UNIX2DOS_H + +#ifdef __GNUC__ +#ifndef strcmpi +# define strcmpi(s1, s2) strcasecmp(s1, s2) +#endif +#endif + +/* ASCII mode. No conversion. */ + +static int U2DAsciiTable[256] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87', '\x88', '\x89', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f', + '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97', '\x98', '\x99', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f', + '\xa0', '\xa1', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6', '\xa7', '\xa8', '\xa9', '\xaa', '\xab', '\xac', '\xad', '\xae', '\xaf', + '\xb0', '\xb1', '\xb2', '\xb3', '\xb4', '\xb5', '\xb6', '\xb7', '\xb8', '\xb9', '\xba', '\xbb', '\xbc', '\xbd', '\xbe', '\xbf', + '\xc0', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7', '\xc8', '\xc9', '\xca', '\xcb', '\xcc', '\xcd', '\xce', '\xcf', + '\xd0', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6', '\xd7', '\xd8', '\xd9', '\xda', '\xdb', '\xdc', '\xdd', '\xde', '\xdf', + '\xe0', '\xe1', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6', '\xe7', '\xe8', '\xe9', '\xea', '\xeb', '\xec', '\xed', '\xee', '\xef', + '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7', '\xf8', '\xf9', '\xfa', '\xfb', '\xfc', '\xfd', '\xfe', '\xff', +}; + + +/* 7bit mode. */ +/* All 8 bit non-ASCII characters are converted to a space (\x20) */ + +static int U2D7BitTable [256] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', + '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', + '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', + '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', + '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', + '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', + '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', + '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', +}; + + +/* ISO mode. ISO-8859-1 -> CP437 */ +/* Non-convertable characters are converted to a dot (\x2e) */ + +static int U2DIso437Table[256] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\xff', '\xad', '\x9b', '\x9c', '\x2e', '\x9d', '\x2e', '\x2e', '\x2e', '\x2e', '\xa6', '\xae', '\xaa', '\x2e', '\x2e', '\x2e', + '\xf8', '\xf1', '\xfd', '\x2e', '\x2e', '\xe6', '\x2e', '\xfa', '\x2e', '\x2e', '\xa7', '\xaf', '\xac', '\xab', '\x2e', '\xa8', + '\x2e', '\x2e', '\x2e', '\x2e', '\x8e', '\x8f', '\x92', '\x80', '\x2e', '\x90', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\xa5', '\x2e', '\x2e', '\x2e', '\x2e', '\x99', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x9a', '\x2e', '\x2e', '\xe1', + '\x85', '\xa0', '\x83', '\x2e', '\x84', '\x86', '\x91', '\x87', '\x8a', '\x82', '\x88', '\x89', '\x8d', '\xa1', '\x8c', '\x8b', + '\x2e', '\xa4', '\x95', '\xa2', '\x93', '\x2e', '\x94', '\xf6', '\x2e', '\x97', '\xa3', '\x96', '\x81', '\x2e', '\x2e', '\x98', +}; + +/* ISO mode. ISO-8859-1 -> CP850 */ +/* Non-convertable characters are converted to a dot (\x2e) */ + +static int U2DIso850Table[256] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\xff', '\xad', '\xbd', '\x9c', '\xcf', '\xbe', '\xdd', '\xf5', '\xf9', '\xb8', '\xa6', '\xae', '\xaa', '\xf0', '\xa9', '\xee', + '\xf8', '\xf1', '\xfd', '\xfc', '\xef', '\xe6', '\xf4', '\xfa', '\xf7', '\xfb', '\xa7', '\xaf', '\xac', '\xab', '\xf3', '\xa8', + '\xb7', '\xb5', '\xb6', '\xc7', '\x8e', '\x8f', '\x92', '\x80', '\xd4', '\x90', '\xd2', '\xd3', '\xde', '\xd6', '\xd7', '\xd8', + '\xd1', '\xa5', '\xe3', '\xe0', '\xe2', '\xe5', '\x99', '\x9e', '\x9d', '\xeb', '\xe9', '\xea', '\x9a', '\xed', '\xe8', '\xe1', + '\x85', '\xa0', '\x83', '\xc6', '\x84', '\x86', '\x91', '\x87', '\x8a', '\x82', '\x88', '\x89', '\x8d', '\xa1', '\x8c', '\x8b', + '\xd0', '\xa4', '\x95', '\xa2', '\x93', '\xe4', '\x94', '\xf6', '\x9b', '\x97', '\xa3', '\x96', '\x81', '\xec', '\xe7', '\x98', +}; + +/* ISO mode. ISO-8859-1 -> CP860 */ +/* Non-convertable characters are converted to a dot (\x2e) */ + +static int U2DIso860Table[256] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\xff', '\xad', '\x9b', '\x9c', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\xa6', '\xae', '\xaa', '\x2e', '\x2e', '\x2e', + '\xf8', '\xf1', '\xfd', '\x2e', '\x2e', '\xe6', '\x2e', '\xfa', '\x2e', '\x2e', '\xa7', '\xaf', '\xac', '\xab', '\x2e', '\xa8', + '\x91', '\x86', '\x8f', '\x8e', '\x2e', '\x2e', '\x2e', '\x80', '\x92', '\x90', '\x89', '\x2e', '\x98', '\x8b', '\x2e', '\x2e', + '\x2e', '\xa5', '\xa9', '\x9f', '\x8c', '\x99', '\x2e', '\x2e', '\x2e', '\x9d', '\x96', '\x2e', '\x9a', '\x2e', '\x2e', '\xe1', + '\x85', '\xa0', '\x83', '\x84', '\x2e', '\x2e', '\x2e', '\x87', '\x8a', '\x82', '\x88', '\x2e', '\x8d', '\xa1', '\x2e', '\x2e', + '\x2e', '\xa4', '\x95', '\xa2', '\x93', '\x94', '\x2e', '\xf6', '\x2e', '\x97', '\xa3', '\x2e', '\x81', '\x2e', '\x2e', '\x2e', +}; + +/* ISO mode. ISO-8859-1 -> CP863 */ +/* Non-convertable characters are converted to a dot (\x2e) */ + +static int U2DIso863Table[256] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\xff', '\xad', '\x9b', '\x9c', '\x98', '\x9d', '\xa0', '\x8f', '\xa4', '\x2e', '\xa6', '\xae', '\xaa', '\x2e', '\x2e', '\xa7', + '\xf8', '\xf1', '\xfd', '\xa6', '\xa1', '\xe6', '\x86', '\xfa', '\xa5', '\x2e', '\xa7', '\xaf', '\xac', '\xab', '\xad', '\xa8', + '\x8e', '\x2e', '\x84', '\x2e', '\x8e', '\x8f', '\x92', '\x80', '\x91', '\x90', '\x92', '\x94', '\x2e', '\x2e', '\xa8', '\x95', + '\x2e', '\xa5', '\x2e', '\x2e', '\x99', '\x2e', '\x99', '\x2e', '\x2e', '\x9d', '\x2e', '\x9e', '\x9a', '\x2e', '\x2e', '\xe1', + '\x85', '\xa0', '\x83', '\x2e', '\x84', '\x86', '\x91', '\x87', '\x8a', '\x82', '\x88', '\x89', '\x8d', '\xa1', '\x8c', '\x8b', + '\x2e', '\xa4', '\x95', '\xa2', '\x93', '\x2e', '\x94', '\xf6', '\x2e', '\x97', '\xa3', '\x96', '\x81', '\x2e', '\x2e', '\x98', +}; + +/* ISO mode. ISO-8859-1 -> CP865 */ +/* Non-convertable characters are converted to a dot (\x2e) */ + +static int U2DIso865Table[256] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\xff', '\xad', '\x2e', '\x9c', '\xaf', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\xa6', '\xae', '\xaa', '\x2e', '\x2e', '\x2e', + '\xf8', '\xf1', '\xfd', '\x2e', '\x2e', '\xe6', '\x2e', '\xfa', '\x2e', '\x2e', '\xa7', '\x2e', '\xac', '\xab', '\x2e', '\xa8', + '\x2e', '\x2e', '\x2e', '\x2e', '\x8e', '\x8f', '\x92', '\x80', '\x2e', '\x90', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\xa5', '\x2e', '\x2e', '\x2e', '\x2e', '\x99', '\x2e', '\x9d', '\x2e', '\x2e', '\x2e', '\x9a', '\x2e', '\x2e', '\xe1', + '\x85', '\xa0', '\x83', '\x2e', '\x84', '\x86', '\x91', '\x87', '\x8a', '\x82', '\x88', '\x89', '\x8d', '\xa1', '\x8c', '\x8b', + '\x2e', '\xa4', '\x95', '\xa2', '\x93', '\x2e', '\x94', '\xf6', '\x9b', '\x97', '\xa3', '\x96', '\x81', '\x2e', '\x2e', '\x98', +}; + +/* ISO-8859-1 -> CP1252 */ +/* Non-convertable characters are converted to a dot (\x2e) */ + +static int U2DIso1252Table[256] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', '\x2e', + '\xa0', '\xa1', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6', '\xa7', '\xa8', '\xa9', '\xaa', '\xab', '\xac', '\xad', '\xae', '\xaf', + '\xb0', '\xb1', '\xb2', '\xb3', '\xb4', '\xb5', '\xb6', '\xb7', '\xb8', '\xb9', '\xba', '\xbb', '\xbc', '\xbd', '\xbe', '\xbf', + '\xc0', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7', '\xc8', '\xc9', '\xca', '\xcb', '\xcc', '\xcd', '\xce', '\xcf', + '\xd0', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6', '\xd7', '\xd8', '\xd9', '\xda', '\xdb', '\xdc', '\xdd', '\xde', '\xdf', + '\xe0', '\xe1', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6', '\xe7', '\xe8', '\xe9', '\xea', '\xeb', '\xec', '\xed', '\xee', '\xef', + '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7', '\xf8', '\xf9', '\xfa', '\xfb', '\xfc', '\xfd', '\xfe', '\xff', +}; + +#endif diff --git a/version.mk b/version.mk new file mode 100644 index 0000000..ded8197 --- /dev/null +++ b/version.mk @@ -0,0 +1,4 @@ +DOS2UNIX_VERSION = 6.0 +DOS2UNIX_VERSION_SHORT = 60 +DOS2UNIX_DATE = 2012-05-06 +DOS2UNIX_AUTHOR = 'Erwin Waterlander' diff --git a/wccdos16.mak b/wccdos16.mak new file mode 100644 index 0000000..8f64e36 --- /dev/null +++ b/wccdos16.mak @@ -0,0 +1,63 @@ +!include version.mk
+
+CC = wcc
+SRCDIR = .
+DEFINES = -DMSDOS -DVER_REVISION="$(DOS2UNIX_VERSION)" -DVER_DATE="$(DOS2UNIX_DATE)"
+CFLAGS = $(DEFINES) -i=$(SRCDIR) -w4 -e25 -zq -od -d2 -bt=dos -ml
+WATCOMSRC = $(%WATCOM)\src\startup
+
+TARGET = dos
+
+all: dos2unix.exe unix2dos.exe mac2unix.exe unix2mac.exe
+
+cflags.cfg:
+ @%create cflags.cfg
+ @%append cflags.cfg $(CFLAGS)
+
+dos2unix.exe: dos2unix.obj querycp.obj common.obj wildargv.obj
+ @%create dos2unix.lnk
+ @%append dos2unix.lnk FIL dos2unix.obj,querycp.obj,common.obj,wildargv.obj
+ wlink name dos2unix d all SYS $(TARGET) op m op st=32k op maxe=25 op q op symf @dos2unix.lnk
+ del dos2unix.lnk
+
+unix2dos.exe: unix2dos.obj querycp.obj common.obj wildargv.obj
+ @%create unix2dos.lnk
+ @%append unix2dos.lnk FIL unix2dos.obj,querycp.obj,common.obj,wildargv.obj
+ wlink name unix2dos d all SYS $(TARGET) op m op st=32k op maxe=25 op q op symf @unix2dos.lnk
+ del unix2dos.lnk
+
+
+dos2unix.obj : $(SRCDIR)\dos2unix.c $(SRCDIR)\querycp.h $(SRCDIR)\common.h cflags.cfg
+ $(CC) @cflags.cfg $(SRCDIR)\dos2unix.c
+
+unix2dos.obj : $(SRCDIR)\unix2dos.c $(SRCDIR)\querycp.h $(SRCDIR)\common.h cflags.cfg
+ $(CC) @cflags.cfg $(SRCDIR)\unix2dos.c
+
+querycp.obj : $(SRCDIR)\querycp.c $(SRCDIR)\querycp.h cflags.cfg
+ $(CC) @cflags.cfg $(SRCDIR)\querycp.c
+
+common.obj : $(SRCDIR)\common.c $(SRCDIR)\common.h cflags.cfg
+ $(CC) @cflags.cfg $(SRCDIR)\common.c
+
+wildargv.obj : $(WATCOMSRC)\wildargv.c
+ $(CC) @cflags.cfg $(WATCOMSRC)\wildargv.c
+
+mac2unix.exe : dos2unix.exe
+ copy /v dos2unix.exe mac2unix.exe
+
+unix2mac.exe : unix2dos.exe
+ copy /v unix2dos.exe unix2mac.exe
+
+strip
+ wstrip dos2unix.exe
+ wstrip unix2dos.exe
+ wstrip mac2unix.exe
+ wstrip unix2mac.exe
+
+clean
+ -del *.obj
+ -del *.exe
+ -del *.SYM
+ -del *.map
+ -del *.ilk
+ -del cflags.cfg
diff --git a/wccdos32.mak b/wccdos32.mak new file mode 100644 index 0000000..a8fb6bd --- /dev/null +++ b/wccdos32.mak @@ -0,0 +1,63 @@ +!include version.mk
+
+CC = wcc386
+SRCDIR = .
+DEFINES = -DVER_REVISION="$(DOS2UNIX_VERSION)" -DVER_DATE="$(DOS2UNIX_DATE)"
+CFLAGS = $(DEFINES) -i=$(SRCDIR) -w4 -e25 -zq -od -d2 -5r -bt=dos -mf
+WATCOMSRC = $(%WATCOM)\src\startup
+
+TARGET = causeway
+
+all: dos2unix.exe unix2dos.exe mac2unix.exe unix2mac.exe
+
+cflagsDS.cfg:
+ @%create cflagsDS.cfg
+ @%append cflagsDS.cfg $(CFLAGS)
+
+dos2unix.exe: dos2unix.obj querycp.obj common.obj wildargv.obj
+ @%create dos2unix.lnk
+ @%append dos2unix.lnk FIL dos2unix.obj,querycp.obj,common.obj,wildargv.obj
+ wlink name dos2unix d all SYS $(TARGET) op inc op m op st=64k op maxe=25 op q op symf @dos2unix.lnk
+ del dos2unix.lnk
+
+unix2dos.exe: unix2dos.obj querycp.obj common.obj wildargv.obj
+ @%create unix2dos.lnk
+ @%append unix2dos.lnk FIL unix2dos.obj,querycp.obj,common.obj,wildargv.obj
+ wlink name unix2dos d all SYS $(TARGET) op inc op m op st=64k op maxe=25 op q op symf @unix2dos.lnk
+ del unix2dos.lnk
+
+
+dos2unix.obj : $(SRCDIR)\dos2unix.c $(SRCDIR)\querycp.h $(SRCDIR)\common.h cflagsDS.cfg
+ $(CC) @cflagsDS.cfg $(SRCDIR)\dos2unix.c
+
+unix2dos.obj : $(SRCDIR)\unix2dos.c $(SRCDIR)\querycp.h $(SRCDIR)\common.h cflagsDS.cfg
+ $(CC) @cflagsDS.cfg $(SRCDIR)\unix2dos.c
+
+querycp.obj : $(SRCDIR)\querycp.c $(SRCDIR)\querycp.h cflagsDS.cfg
+ $(CC) @cflagsDS.cfg $(SRCDIR)\querycp.c
+
+common.obj : $(SRCDIR)\common.c $(SRCDIR)\common.h cflagsDS.cfg
+ $(CC) @cflagsDS.cfg $(SRCDIR)\common.c
+
+wildargv.obj : $(WATCOMSRC)\wildargv.c
+ $(CC) @cflagsDS.cfg $(WATCOMSRC)\wildargv.c
+
+mac2unix.exe : dos2unix.exe
+ copy /v dos2unix.exe mac2unix.exe
+
+unix2mac.exe : unix2dos.exe
+ copy /v unix2dos.exe unix2mac.exe
+
+strip
+ wstrip dos2unix.exe
+ wstrip unix2dos.exe
+ wstrip mac2unix.exe
+ wstrip unix2mac.exe
+
+clean
+ -del *.obj
+ -del *.exe
+ -del *.SYM
+ -del *.map
+ -del *.ilk
+ -del cflagsDS.cfg
diff --git a/wccwin32.mak b/wccwin32.mak new file mode 100644 index 0000000..2e035d3 --- /dev/null +++ b/wccwin32.mak @@ -0,0 +1,65 @@ +!include version.mk
+
+CC = wcc386
+SRCDIR = .
+DEFINES = -DVER_REVISION="$(DOS2UNIX_VERSION)" -DVER_DATE="$(DOS2UNIX_DATE)" -DD2U_UNICODE
+CFLAGS = $(DEFINES) -i=$(SRCDIR) -w4 -e25 -zq -od -d2 -5r -bt=nt -mf
+WATCOMSRC = $(%WATCOM)\src\startup
+
+TARGET = nt
+
+all: dos2unix.exe unix2dos.exe mac2unix.exe unix2mac.exe
+
+cflags32.cfg:
+ @%create cflags32.cfg
+ @%append cflags32.cfg $(CFLAGS)
+
+dos2unix.exe: dos2unix.obj querycp.obj common.obj wildargv.obj
+ @%create dos2unix.lnk
+ @%append dos2unix.lnk FIL dos2unix.obj,querycp.obj,common.obj,wildargv.obj
+ @%append dos2unix.lnk library mpr.lib
+ wlink name dos2unix d all SYS $(TARGET) op inc op m op st=64k op maxe=25 op q op symf @dos2unix.lnk
+ del dos2unix.lnk
+
+unix2dos.exe: unix2dos.obj querycp.obj common.obj wildargv.obj
+ @%create unix2dos.lnk
+ @%append unix2dos.lnk FIL unix2dos.obj,querycp.obj,common.obj,wildargv.obj
+ @%append unix2dos.lnk library mpr.lib
+ wlink name unix2dos d all SYS $(TARGET) op inc op m op st=64k op maxe=25 op q op symf @unix2dos.lnk
+ del unix2dos.lnk
+
+
+dos2unix.obj : $(SRCDIR)\dos2unix.c $(SRCDIR)\querycp.h $(SRCDIR)\common.h cflags32.cfg
+ $(CC) @cflags32.cfg $(SRCDIR)\dos2unix.c
+
+unix2dos.obj : $(SRCDIR)\unix2dos.c $(SRCDIR)\querycp.h $(SRCDIR)\common.h cflags32.cfg
+ $(CC) @cflags32.cfg $(SRCDIR)\unix2dos.c
+
+querycp.obj : $(SRCDIR)\querycp.c $(SRCDIR)\querycp.h cflags32.cfg
+ $(CC) @cflags32.cfg $(SRCDIR)\querycp.c
+
+common.obj : $(SRCDIR)\common.c $(SRCDIR)\common.h cflags32.cfg
+ $(CC) @cflags32.cfg $(SRCDIR)\common.c
+
+wildargv.obj : $(WATCOMSRC)\wildargv.c
+ $(CC) @cflags32.cfg $(WATCOMSRC)\wildargv.c
+
+mac2unix.exe : dos2unix.exe
+ copy /v dos2unix.exe mac2unix.exe
+
+unix2mac.exe : unix2dos.exe
+ copy /v unix2dos.exe unix2mac.exe
+
+strip
+ wstrip dos2unix.exe
+ wstrip unix2dos.exe
+ wstrip mac2unix.exe
+ wstrip unix2mac.exe
+
+clean
+ -del *.obj
+ -del *.exe
+ -del *.SYM
+ -del *.map
+ -del *.ilk
+ -del cflags32.cfg
|