This is crlf.c in view mode; [Download] [Up]
/*$Copyright: * Copyright (C) 1992.5.22. Recruit Co.,Ltd. * Institute for Supercomputing Research * All rights reserved. * NewsBase by ISR, Kazuto MIYAI, Gary ARAKAKI, Katsunori SUZUKI, Kok-meng Lue * * You may freely copy, distribute and reuse the code in this program under * following conditions. * - to include this notice in the source code, if it is to be distributed * with source code. * - to add the file named "COPYING" within the code, which shall include * GNU GENERAL PUBLIC LICENSE(*). * - to display an acknowledgement in binary code as follows: "This product * includes software developed by Recruit Co.,Ltd., ISR." * - to display a notice which shall state that the users may freely copy, * distribute and reuse the code in this program under GNU GENERAL PUBLIC * LICENSE(*) * - to indicate the way to access the copy of GNU GENERAL PUBLIC LICENSE(*) * * (*)GNU GENERAL PUBLIC LICENSE is stored in the file named COPYING * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. $*/ /* * filter program for processing the end charactor for each line * This routine is for handling \r\n and \n for the convention of both * network and local disk. */ #import <stdio.h> #import <streams/streams.h> //#define TEST #ifdef TEST /* main routine for testing * crlf {-lf, -crlf} * * input: standard in * output: standard out */ main(int argc, char **argv) { void tolf(NXStream *in, NXStream *out); void tocrlf(NXStream *in, NXStream *out); NXStream *in, *out; int stdInFileDesc, stdOutFileDesc; if (argc != 2) { fprintf(stderr,"Usage: crlf {-lf, -crlf}\n"); exit(1); } /* get data from stdin */ stdInFileDesc = fileno(stdin); stdOutFileDesc = fileno(stdout); in = NXOpenFile(stdInFileDesc, NX_READONLY); out = NXOpenFile(stdOutFileDesc, NX_WRITEONLY); ++argv; /*skip first arg, because first one is command itself */ if (strcmp("-lf", *argv) == 0) { tolf(in, out); NXClose(in); NXClose(out); } else if (strcmp("-crlf", *argv) == 0) { tocrlf(in, out); NXClose(in); NXClose(out); } else { fprintf(stderr, "Usage: invalid option\n"); } return (0); } #endif /*TEST*/ /* process the end of each line * \n --> \n * \r\n --> \n * * NXStream *in: input stream * NXStream *out: output stream * (in, out must be allocated in caller routine) * return: none */ void tolf(NXStream *in, NXStream *out) { int ch1, ch2; if ((ch1 = NXGetc(in)) == EOF) { return; } while ((ch2=NXGetc(in)) != EOF) { if (ch1 == '\r' && ch2 =='\n') { NXPutc(out, '\n'); if ((ch1 = NXGetc(in)) == EOF) { return; } } else { NXPutc(out, ch1); ch1 = ch2; } } NXPutc(out, ch1); return; } /* process the end of each line * \n --> \r\n * \r\n --> \r\n * * NXStream *in: input stream * NXStream *out: output stream * (in, out must be allocated in caller routine) * return: none */ void tocrlf(NXStream *in, NXStream *out) { int ch1, ch2; if ((ch1 = NXGetc(in)) == EOF) { return; } else if (ch1 == '\n') { NXPutc(out, '\r'); NXPutc(out, '\n'); } else { NXPutc(out, ch1); } while ((ch2=NXGetc(in)) != EOF) { if (ch1 != '\r' && ch2 == '\n') { NXPutc(out, '\r'); NXPutc(out, '\n'); } else { NXPutc(out, ch2); } ch1 = ch2; } return; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.