您的位置:首页 > 运维架构 > Linux

Linux命令学习总结:dos2unix - unix2dos

2015-12-26 13:31 405 查看
命令简介:dos2unix是将Windows格式文件转换为Unix、Linux格式的实用命令。Windows格式文件的换行符为\r\n,而Unix&Linux文件的换行符为\n.dos2unix命令其实就是将文件中的\r\n转换为\n。而unix2dos则是和dos2unix互为孪生的一个命令,它是将Linux&Unix格式文件转换为Windows格式文件的命令。命令语法:dos2unix[options][-cconvmode][-ofile...][-ninfileoutfile...]unix2dos[options][-cconvmode][-ofile...][-ninfileoutfile...]命令参数:此命令参数是RedHatEnterpriseLinuxServerrelease5.7下dos2unix命令参数,不同版本Linux的dos2nnix命令参数有可能不同。

参数

长参数

描叙

-h

显示命令dos2unix联机帮助信息。

-k

保持文件时间戳不变

-q

静默模式,不输出转换结果信息等

-V

显示命令版本信息

-c

转换模式

-o

在源文件转换,默认参数

-n

保留原本的旧档,将转换后的内容输出到新档案.默认都会直接在原来的文件上修改,

使用示例:

1:查看dos2unix命令的帮助信息

[root@DB-Servermyscript]#mandos2unix
[root@DB-Servermyscript]#dos2unix-h
dos2unixCopyright(c)1994-1995BenjaminLin
Copyright(c)1998BerndJohannesWuebben(Version3.0)
Copyright(c)1998ChristianWurll(Version3.1)
Usage:dos2unix[-hkqV][-cconvmode][-ofile...][-ninfileoutfile...]
-h--helpgivethishelp
-k--keepdatekeepoutputfiledate
-q--quietquietmode,suppressallwarnings
alwaysoninstdin->stdoutmode
-V--versiondisplayversionnumber
-c--convmodeconversionmode
convmodeASCII,7bit,ISO,Mac,defaulttoASCII
-l--newlineaddadditionalnewlineinallbutMacconvmode
-o--oldfilewritetooldfile
file...filestoconvertinoldfilemode
-n--newfilewritetonewfile
infileoriginalfileinnewfilemode
outfileoutputfileinnewfilemode

2:dos2unixfilename将Windows格式文本转换为Unix&Linux格式文件

[root@DB-Servermyscript]#cat-vtest.sh
./home/oracle/.bash_profile^M
echo''^M
date^M
echo''^M
^M
sqlplustest/test@/home/oracle/scripts/test.sql^M
^M
echo''^M
date^M
echo''^M
[root@DB-Servermyscript]#dos2unixtest.sh
dos2unix:convertingfiletest.shtoUNIXformat...
[root@DB-Servermyscript]#cat-vtest.sh
./home/oracle/.bash_profile
echo''
date
echo''
sqlplustest/test@/home/oracle/scripts/test.sql
echo''
date
echo''

3:dos2unix可以一次转换多个文件

dos2unixfilename1filename2filename3

4:默认情况下会在源文件上进行转换,如果需要保留源文件,那么可以使用参数-ndos2unix-noldfilenamenewfilename

[root@DB-Servermyscript]#dos2unix-ndosfilelinuxfile
dos2unix:convertingfiledosfiletofilelinuxfileinUNIXformat...
[root@DB-Servermyscript]#cat-vdosfile
itisawindowsdosfile^M
youshouldconverttounix&linuxformat^M
[root@DB-Servermyscript]#cat-vlinuxfile
itisawindowsdosfile
youshouldconverttounix&linuxformat
[root@DB-Servermyscript]#




5:保持文件时间戳不变

[root@DB-Servermyscript]#ls-lrtdosfile
-rw-r--r--1rootroot67Dec2611:46dosfile
[root@DB-Servermyscript]#dos2unixdosfile
dos2unix:convertingfiledosfiletoUNIXformat...
[root@DB-Servermyscript]#ls-lrtdosfile
-rw-r--r--1rootroot65Dec2611:58dosfile
[root@DB-Servermyscript]#dos2unix-kdosfile
dos2unix:convertingfiledosfiletoUNIXformat...
[root@DB-Servermyscript]#ls-lrtdosfile
-rw-r--r--1rootroot65Dec2611:58dosfile

6:静默模式格式化文件

[root@DB-Servermyscript]#unix2dos-qdosfile
[root@DB-Servermyscript]#

dos2unix的下载地址为http://sourceforge.net/projects/dos2unix/,可以从上面下载最新版本的dos2unix、unix2dos等命令工具以及相关文档,dos2unix的源码如下所示

/*
*Name:dos2unix
*Documentation:
*Removecr('\x0d')charactersfromafile.
*
*Thedos2unixpackageisdistributedunderFreeBSDstylelicense.
*Seealso
'target='_blank'>http://www.freebsd.org/copyright/freebsd-license.html
*--------
*
*Copyright(C)2009-2015ErwinWaterlander
*Copyright(C)1998ChristianWurll
*Copyright(C)1998BerndJohannesWuebben
*Copyright(C)1994-1995BenjaminLin.
*Allrightsreserved.
*
*Redistributionanduseinsourceandbinaryforms,withorwithout
*modification,arepermittedprovidedthatthefollowingconditions
*aremet:
*1.Redistributionsofsourcecodemustretaintheabovecopyright
*notice,thislistofconditionsandthefollowingdisclaimer.
*2.Redistributionsinbinaryformmustreproducetheabovecopyright
*noticeinthedocumentationand/orothermaterialsprovidedwith
*thedistribution.
*
*THISSOFTWAREISPROVIDEDBYTHEAUTHOR``ASIS''ANDANY
*EXPRESSORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THE
*IMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPARTICULAR
*PURPOSEAREDISCLAIMED.INNOEVENTSHALLTHEAUTHORBELIABLE
*FORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,OR
*CONSEQUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENT
*OFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;OR
*BUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,
*WHETHERINCONTRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCE
*OROTHERWISE)ARISINGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVEN
*IFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
*
*==1.0==1989.10.04==JohnBirchfield(jb@koko.csustan.edu)
*==1.1==1994.12.20==BenjaminLin(blin@socs.uts.edu.au)
*CleanedupforBorlandC/C++4.02
*==1.2==1995.03.16==BenjaminLin(blin@socs.uts.edu.au)
*ModifiedtomoreconformtoUNIXstyle.
*==2.0==1995.03.19==BenjaminLin(blin@socs.uts.edu.au)
*Rewrittenfromscratch.
*==2.1==1995.03.29==BenjaminLin(blin@socs.uts.edu.au)
*ConversiontoSunOScharsetimplemented.
*==2.2==1995.03.30==BenjaminLin(blin@socs.uts.edu.au)
*Fixedabugin2.1whereinnew-filemode,ifoutfilealreadyexists
*conversioncannotbecompletedproperly.
*
*AddedMactextfiletranslation,i.e.\rto\nconversion
*BerndJohannesWuebben,wuebben@kde.org
*WedFeb419:12:58EST1998
*
*Addedextranewlineif^Moccurs
*ChristianWurll,wurll@ira.uka.de
*ThuNov191998
*
*SeeChangeLog.txtforcompleteversionhistory.
*
*/
/*#defineDEBUG1*/
#define__DOS2UNIX_C
#include"common.h"
#include"dos2unix.h"
#if(defined(_WIN32)&&!defined(__CYGWIN__))
#include<windows.h>
#endif
#ifdefD2U_UNICODE
#if!defined(__MSDOS__)&&!defined(_WIN32)&&!defined(__OS2__)/*Unix,Cygwin*/
#include<langinfo.h>
#endif
#endif
voidPrintLicense(void)
{
printf("%s",_("\
Copyright(C)2009-2015ErwinWaterlander\n\
Copyright(C)1998ChristianWurll(Version3.1)\n\
Copyright(C)1998BerndJohannesWuebben(Version3.0)\n\
Copyright(C)1994-1995BenjaminLin\n\
Allrightsreserved.\n\n"));
PrintBSDLicense();
}
#ifdefD2U_UNICODE
wint_tStripDelimiterW(FILE*ipInF,FILE*ipOutF,CFlag*ipFlag,wint_tCurChar,unsignedint*converted,constchar*progname)
{
wint_tTempNextChar;
/*CurCharisalwaysCR(x0d)*/
/*Innormaldos2unixmodeputnothing(skipCR).*/
/*Don'tmodifyMacfileswhenindos2unixmode.*/
if((TempNextChar=d2u_getwc(ipInF,ipFlag->bomtype))!=WEOF){
if(d2u_ungetwc(TempNextChar,ipInF,ipFlag->bomtype)==WEOF){/*putbackpeekchar*/
d2u_getc_error(ipFlag,progname);
returnWEOF;
}
if(TempNextChar!=0x0a){
if(d2u_putwc(CurChar,ipOutF,ipFlag,progname)==WEOF){/*Macline,putCR*/
d2u_putwc_error(ipFlag,progname);
returnWEOF;
}
}else{
(*converted)++;
if(ipFlag->NewLine){/*addadditionalLF?*/
if(d2u_putwc(0x0a,ipOutF,ipFlag,progname)==WEOF){
d2u_putwc_error(ipFlag,progname);
returnWEOF;
}
}
}
}else{
if(ferror(ipInF)){
d2u_getc_error(ipFlag,progname);
returnWEOF;
}
if(CurChar==0x0d){/*EOF:lastMaclinedelimiter(CR)?*/
if(d2u_putwc(CurChar,ipOutF,ipFlag,progname)==WEOF){
d2u_putwc_error(ipFlag,progname);
returnWEOF;
}
}
}
returnCurChar;
}
#endif
/*CURNEXT
0xd(CR)0xa(LF)=>putLFifoption-lwasused
0xd(CR)!0xa(LF)=>putCR
0xd(CR)EOF=>putCR
*/
intStripDelimiter(FILE*ipInF,FILE*ipOutF,CFlag*ipFlag,intCurChar,unsignedint*converted,constchar*progname)
{
intTempNextChar;
/*CurCharisalwaysCR(x0d)*/
/*Innormaldos2unixmodeputnothing(skipCR).*/
/*Don'tmodifyMacfileswhenindos2unixmode.*/
if((TempNextChar=fgetc(ipInF))!=EOF){
if(ungetc(TempNextChar,ipInF)==EOF){/*putbackpeekchar*/
d2u_getc_error(ipFlag,progname);
returnEOF;
}
if(TempNextChar!='\x0a'){
if(fputc(CurChar,ipOutF)==EOF){/*Macline,putCR*/
d2u_putc_error(ipFlag,progname);
returnEOF;
}
}else{
(*converted)++;
if(ipFlag->NewLine){/*addadditionalLF?*/
if(fputc('\x0a',ipOutF)==EOF){
d2u_putc_error(ipFlag,progname);
returnEOF;
}
}
}
}else{
if(ferror(ipInF)){
d2u_getc_error(ipFlag,progname);
returnEOF;
}
if(CurChar=='\x0d'){/*EOF:lastMaclinedelimiter(CR)?*/
if(fputc(CurChar,ipOutF)==EOF){
d2u_putc_error(ipFlag,progname);
returnEOF;
}
}
}
returnCurChar;
}
/*convertsstreamipInFtoUNIXformattextandwritetostreamipOutF
*RetVal:0ifsuccess
*-1otherwise
*/
#ifdefD2U_UNICODE
intConvertDosToUnixW(FILE*ipInF,FILE*ipOutF,CFlag*ipFlag,constchar*progname)
{
intRetVal=0;
wint_tTempChar;
wint_tTempNextChar;
unsignedintline_nr=1;
unsignedintconverted=0;
ipFlag->status=0;
/*CR-LF->LF*/
/*LF->LF,incasetheinputfileisaUnixtextfile*/
/*CR->CR,indos2unixmode(don'tmodifyMacfile)*/
/*CR->LF,inMacmode*/
/*\x0a=Newline/LineFeed(LF)*/
/*\x0d=CarriageReturn(CR)*/
switch(ipFlag->FromToMode)
{
caseFROMTO_DOS2UNIX:/*dos2unix*/
while((TempChar=d2u_getwc(ipInF,ipFlag->bomtype))!=WEOF){/*getcharacter*/
if((ipFlag->Force==0)&&
(TempChar<32)&&
(TempChar!=0x0a)&&/*NotanLF*/
(TempChar!=0x0d)&&/*NotaCR*/
(TempChar!=0x09)&&/*NotaTAB*/
(TempChar!=0x0c)){/*Notaformfeed*/
RetVal=-1;
ipFlag->status|=BINARY_FILE;
if(ipFlag->verbose){
if((ipFlag->stdio_mode)&&(!ipFlag->error))ipFlag->error=1;
d2u_fprintf(stderr,"%s:",progname);
d2u_fprintf(stderr,_("Binarysymbol0x00%02Xfoundatline%u\n"),TempChar,line_nr);
}
break;
}
if(TempChar!=0x0d){
if(TempChar==0x0a)/*CountallDOSandUnixlinebreaks*/
++line_nr;
if(d2u_putwc(TempChar,ipOutF,ipFlag,progname)==WEOF){
RetVal=-1;
d2u_putwc_error(ipFlag,progname);
break;
}
}else{
if(StripDelimiterW(ipInF,ipOutF,ipFlag,TempChar,&converted,progname)==WEOF){
RetVal=-1;
break;
}
}
}
if((TempChar==WEOF)&&ferror(ipInF)){
RetVal=-1;
d2u_getc_error(ipFlag,progname);
}
break;
caseFROMTO_MAC2UNIX:/*mac2unix*/
while((TempChar=d2u_getwc(ipInF,ipFlag->bomtype))!=WEOF){
if((ipFlag->Force==0)&&
(TempChar<32)&&
(TempChar!=0x0a)&&/*NotanLF*/
(TempChar!=0x0d)&&/*NotaCR*/
(TempChar!=0x09)&&/*NotaTAB*/
(TempChar!=0x0c)){/*Notaformfeed*/
RetVal=-1;
ipFlag->status|=BINARY_FILE;
if(ipFlag->verbose){
if((ipFlag->stdio_mode)&&(!ipFlag->error))ipFlag->error=1;
d2u_fprintf(stderr,"%s:",progname);
d2u_fprintf(stderr,_("Binarysymbol0x00%02Xfoundatline%u\n"),TempChar,line_nr);
}
break;
}
if((TempChar!=0x0d)){
if(TempChar==0x0a)/*CountallDOSandUnixlinebreaks*/
++line_nr;
if(d2u_putwc(TempChar,ipOutF,ipFlag,progname)==WEOF){
RetVal=-1;
d2u_putwc_error(ipFlag,progname);
break;
}
}
else{
/*TempCharisaCR*/
if((TempNextChar=d2u_getwc(ipInF,ipFlag->bomtype))!=WEOF){
if(d2u_ungetwc(TempNextChar,ipInF,ipFlag->bomtype)==WEOF){/*putbackpeekchar*/
d2u_getc_error(ipFlag,progname);
RetVal=-1;
break;
}
/*Don'ttouchthisdelimiterifit'saCR,LFpair.*/
if(TempNextChar==0x0a){
if(d2u_putwc(0x0d,ipOutF,ipFlag,progname)==WEOF){/*putCR,partofDOSCR-LF*/
d2u_putwc_error(ipFlag,progname);
RetVal=-1;
break;
}
continue;
}
}
if(d2u_putwc(0x0a,ipOutF,ipFlag,progname)==WEOF){/*MAClineend(CR).PutLF*/
RetVal=-1;
d2u_putwc_error(ipFlag,progname);
break;
}
converted++;
line_nr++;/*CountallMaclinebreaks*/
if(ipFlag->NewLine){/*addadditionalLF?*/
if(d2u_putwc(0x0a,ipOutF,ipFlag,progname)==WEOF){
RetVal=-1;
d2u_putwc_error(ipFlag,progname);
break;
}
}
}
}
if((TempChar==WEOF)&&ferror(ipInF)){
RetVal=-1;
d2u_getc_error(ipFlag,progname);
}
break;
default:/*unknownFromToMode*/
;
#ifDEBUG
d2u_fprintf(stderr,"%s:",progname);
d2u_fprintf(stderr,_("programerror,invalidconversionmode%d\n"),ipFlag->FromToMode);
exit(1);
#endif
}
if(ipFlag->status&UNICODE_CONVERSION_ERROR)
ipFlag->line_nr=line_nr;
if((RetVal==0)&&(ipFlag->verbose>1)){
d2u_fprintf(stderr,"%s:",progname);
d2u_fprintf(stderr,_("Converted%uoutof%ulinebreaks.\n"),converted,line_nr-1);
}
returnRetVal;
}
#endif
/*convertsstreamipInFtoUNIXformattextandwritetostreamipOutF
*RetVal:0ifsuccess
*-1otherwise
*/
intConvertDosToUnix(FILE*ipInF,FILE*ipOutF,CFlag*ipFlag,constchar*progname)
{
intRetVal=0;
intTempChar;
intTempNextChar;
int*ConvTable;
unsignedintline_nr=1;
unsignedintconverted=0;
ipFlag->status=0;
switch(ipFlag->ConvMode){
caseCONVMODE_ASCII:/*ascii*/
caseCONVMODE_UTF16LE:/*AssumeUTF-16LE,bomtype=FILE_UTF8orGB18030*/
caseCONVMODE_UTF16BE:/*AssumeUTF-16BE,bomtype=FILE_UTF8orGB18030*/
ConvTable=D2UAsciiTable;
break;
caseCONVMODE_7BIT:/*7bit*/
ConvTable=D2U7BitTable;
break;
caseCONVMODE_437:/*iso*/
ConvTable=D2UIso437Table;
break;
caseCONVMODE_850:/*iso*/
ConvTable=D2UIso850Table;
break;
caseCONVMODE_860:/*iso*/
ConvTable=D2UIso860Table;
break;
caseCONVMODE_863:/*iso*/
ConvTable=D2UIso863Table;
break;
caseCONVMODE_865:/*iso*/
ConvTable=D2UIso865Table;
break;
caseCONVMODE_1252:/*iso*/
ConvTable=D2UIso1252Table;
break;
default:/*unknownconvmode*/
ipFlag->status|=WRONG_CODEPAGE;
return(-1);
}
/*TurnoffISOand7-bitconversionforUnicodetextfiles*/
if(ipFlag->bomtype>0)
ConvTable=D2UAsciiTable;
if((ipFlag->ConvMode>CONVMODE_7BIT)&&(ipFlag->verbose)){/*notasciior7bit*/
d2u_fprintf(stderr,"%s:",progname);
d2u_fprintf(stderr,_("usingcodepage%d.\n"),ipFlag->ConvMode);
}
/*CR-LF->LF*/
/*LF->LF,incasetheinputfileisaUnixtextfile*/
/*CR->CR,indos2unixmode(don'tmodifyMacfile)*/
/*CR->LF,inMacmode*/
/*\x0a=Newline/LineFeed(LF)*/
/*\x0d=CarriageReturn(CR)*/
switch(ipFlag->FromToMode){
caseFROMTO_DOS2UNIX:/*dos2unix*/
while((TempChar=fgetc(ipInF))!=EOF){/*getcharacter*/
if((ipFlag->Force==0)&&
(TempChar<32)&&
(TempChar!='\x0a')&&/*NotanLF*/
(TempChar!='\x0d')&&/*NotaCR*/
(TempChar!='\x09')&&/*NotaTAB*/
(TempChar!='\x0c')){/*Notaformfeed*/
RetVal=-1;
ipFlag->status|=BINARY_FILE;
if(ipFlag->verbose){
if((ipFlag->stdio_mode)&&(!ipFlag->error))ipFlag->error=1;
d2u_fprintf(stderr,"%s:",progname);
d2u_fprintf(stderr,_("Binarysymbol0x%02Xfoundatline%u\n"),TempChar,line_nr);
}
break;
}
if(TempChar!='\x0d'){
if(TempChar=='\x0a')/*CountallDOSandUnixlinebreaks*/
++line_nr;
if(fputc(ConvTable[TempChar],ipOutF)==EOF){
RetVal=-1;
d2u_putc_error(ipFlag,progname);
break;
}
}else{
if(StripDelimiter(ipInF,ipOutF,ipFlag,TempChar,&converted,progname)==EOF){
RetVal=-1;
break;
}
}
}
if((TempChar==EOF)&&ferror(ipInF)){
RetVal=-1;
d2u_getc_error(ipFlag,progname);
}
break;
caseFROMTO_MAC2UNIX:/*mac2unix*/
while((TempChar=fgetc(ipInF))!=EOF){
if((ipFlag->Force==0)&&
(TempChar<32)&&
(TempChar!='\x0a')&&/*NotanLF*/
(TempChar!='\x0d')&&/*NotaCR*/
(TempChar!='\x09')&&/*NotaTAB*/
(TempChar!='\x0c')){/*Notaformfeed*/
RetVal=-1;
ipFlag->status|=BINARY_FILE;
if(ipFlag->verbose){
if((ipFlag->stdio_mode)&&(!ipFlag->error))ipFlag->error=1;
d2u_fprintf(stderr,"%s:",progname);
d2u_fprintf(stderr,_("Binarysymbol0x%02Xfoundatline%u\n"),TempChar,line_nr);
}
break;
}
if((TempChar!='\x0d')){
if(TempChar=='\x0a')/*CountallDOSandUnixlinebreaks*/
++line_nr;
if(fputc(ConvTable[TempChar],ipOutF)==EOF){
RetVal=-1;
d2u_putc_error(ipFlag,progname);
break;
}
}
else{
/*TempCharisaCR*/
if((TempNextChar=fgetc(ipInF))!=EOF){
if(ungetc(TempNextChar,ipInF)==EOF){/*putbackpeekchar*/
d2u_getc_error(ipFlag,progname);
RetVal=-1;
break;
}
/*Don'ttouchthisdelimiterifit'saCR,LFpair.*/
if(TempNextChar=='\x0a'){
if(fputc('\x0d',ipOutF)==EOF){/*putCR,partofDOSCR-LF*/
RetVal=-1;
d2u_putc_error(ipFlag,progname);
break;
}
continue;
}
}
if(fputc('\x0a',ipOutF)==EOF){/*MAClineend(CR).PutLF*/
RetVal=-1;
d2u_putc_error(ipFlag,progname);
break;
}
converted++;
line_nr++;/*CountallMaclinebreaks*/
if(ipFlag->NewLine){/*addadditionalLF?*/
if(fputc('\x0a',ipOutF)==EOF){
RetVal=-1;
d2u_putc_error(ipFlag,progname);
break;
}
}
}
}
if((TempChar==EOF)&&ferror(ipInF)){
RetVal=-1;
d2u_getc_error(ipFlag,progname);
}
break;
default:/*unknownFromToMode*/
;
#ifDEBUG
d2u_fprintf(stderr,"%s:",progname);
d2u_fprintf(stderr,_("programerror,invalidconversionmode%d\n"),ipFlag->FromToMode);
exit(1);
#endif
}
if((RetVal==0)&&(ipFlag->verbose>1)){
d2u_fprintf(stderr,"%s:",progname);
d2u_fprintf(stderr,_("Converted%uoutof%ulinebreaks.\n"),converted,line_nr-1);
}
returnRetVal;
}
intmain(intargc,char*argv[])
{
/*variabledeclarations*/
charprogname[9];
CFlag*pFlag;
char*ptr;
charlocaledir[1024];
#ifdef__MINGW64__
int_dowildcard=-1;/*enablewildcardexpansionforWin64*/
#endif
intargc_new;
char**argv_new;
progname[8]='\0';
strcpy(progname,"dos2unix");
#ifdefENABLE_NLS
ptr=getenv("DOS2UNIX_LOCALEDIR");
if(ptr==NULL)
strcpy(localedir,LOCALEDIR);
else{
if(strlen(ptr)<sizeof(localedir))
strcpy(localedir,ptr);
else{
d2u_fprintf(stderr,"%s:",progname);
d2u_ansi_fprintf(stderr,"%s",_("error:ValueofenvironmentvariableDOS2UNIX_LOCALEDIRistoolong.\n"));
strcpy(localedir,LOCALEDIR);
}
}
#endif
#ifdefined(ENABLE_NLS)||(defined(D2U_UNICODE)&&!defined(__MSDOS__)&&!defined(_WIN32)&&!defined(__OS2__))
/*setlocale()isalsoneededfornl_langinfo()*/
setlocale(LC_ALL,"");
#endif
#ifdefENABLE_NLS
bindtextdomain(PACKAGE,localedir);
textdomain(PACKAGE);
#endif
/*variableinitialisations*/
pFlag=(CFlag*)malloc(sizeof(CFlag));
if(pFlag==NULL){
d2u_fprintf(stderr,"dos2unix:");
d2u_ansi_fprintf(stderr,"%s\n",strerror(errno));
returnerrno;
}
pFlag->FromToMode=FROMTO_DOS2UNIX;/*defaultdos2unix*/
pFlag->keep_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");
}
#ifdefD2U_UNIFILE
/*GetargumentsinwideUnicodeformatintheWindowsCommandPrompt*/
wchar_t**wargv;
char***argv_glob;
/*Thisdoesnotsupportwildcardexpansion(globbing)*/
wargv=CommandLineToArgvW(GetCommandLineW(),&argc);
argv_glob=(char***)malloc(sizeof(char***));
if(argv_glob==NULL){
d2u_fprintf(stderr,"%s:",progname);
d2u_ansi_fprintf(stderr,"%s\n",strerror(errno));
returnerrno;
}
/*GlobtheargumentsandconvertthemtoUTF-8*/
argc_new=glob_warg(argc,wargv,argv_glob,pFlag,progname);
argv_new=*argv_glob;
#else
argc_new=argc;
argv_new=argv;
#endif
#ifdefD2U_UNICODE
returnparse_options(argc_new,argv_new,pFlag,localedir,progname,PrintLicense,ConvertDosToUnix,ConvertDosToUnixW);
#else
returnparse_options(argc_new,argv_new,pFlag,localedir,progname,PrintLicense,ConvertDosToUnix);
#endif
}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: