diff options
Diffstat (limited to 'source/lib/charcnv.c')
-rw-r--r-- | source/lib/charcnv.c | 82 |
1 files changed, 34 insertions, 48 deletions
diff --git a/source/lib/charcnv.c b/source/lib/charcnv.c index 78544f63e65..0462668ff84 100644 --- a/source/lib/charcnv.c +++ b/source/lib/charcnv.c @@ -317,61 +317,47 @@ update_map("\370\253\371\246\372\247\373\256\374\376\375\257\376\361"); /* * Convert unix to dos */ - -char *unix2dos_format_static(const char *str) -{ - const char *p; - char *dp; - - if (!mapsinited) - initmaps(); - - for (p = str, dp = cvtbuf;*p && (dp - cvtbuf < sizeof(cvtbuf) - 1); p++,dp++) - *dp = unix2dos[(unsigned char)*p]; - *dp = 0; - return cvtbuf; -} - -char *unix2dos_format(char *str) +char *unix2dos_format(char *str,BOOL overwrite) { - char *p; - - if (!mapsinited) - initmaps(); - - for (p = str; *p; p++) - *p = unix2dos[(unsigned char)*p]; - return str; + char *p; + char *dp; + + if (!mapsinited) + initmaps(); + + if (overwrite) { + for (p = str; *p; p++) + *p = unix2dos[(unsigned char)*p]; + return str; + } else { + for (p = str, dp = cvtbuf;*p && (dp - cvtbuf < sizeof(cvtbuf) - 1); p++,dp++) + *dp = unix2dos[(unsigned char)*p]; + *dp = 0; + return cvtbuf; + } } /* * Convert dos to unix */ - -char *dos2unix_format_static(const char *str) -{ - const char *p; - char *dp; - - if (!mapsinited) - initmaps(); - - for (p = str, dp = cvtbuf;*p && (dp - cvtbuf < sizeof(cvtbuf) - 1); p++,dp++) - *dp = dos2unix[(unsigned char)*p]; - *dp = 0; - return cvtbuf; -} - -char *dos2unix_format(char *str) +char *dos2unix_format(char *str, BOOL overwrite) { - char *p; - - if (!mapsinited) - initmaps(); - - for (p = str; *p; p++) - *p = dos2unix[(unsigned char)*p]; - return str; + char *p; + char *dp; + + if (!mapsinited) + initmaps(); + + if (overwrite) { + for (p = str; *p; p++) + *p = dos2unix[(unsigned char)*p]; + return str; + } else { + for (p = str, dp = cvtbuf;*p && (dp - cvtbuf < sizeof(cvtbuf) - 1); p++,dp++) + *dp = dos2unix[(unsigned char)*p]; + *dp = 0; + return cvtbuf; + } } |