Please consider a donation to the Higher Intellect project. See https://preterhuman.net/donate.php or the Donate to Higher Intellect page for more info.

UNIX2DOS.C

From Higher Intellect Vintage Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
/* Converts UNIX type text file to DOS format by adding CR's to the LF's */

#include <stdio.h>
#include <conio.h>
#include <dir.h>
#include <alloc.h>
#include <io.h>


char *fnames[1024];


main(int argc,char **argv)
{
	static struct ffblk ffblk;
	int i, done, num_found = 0;

	if(argc < 2) {
		printf("UNIX2DOS  converts UNIX/Amiga type textfiles to DOS format\n");
		printf("usage: unix2dos <UNIXFile>\n");
		printf("Wildcards allowed\n");
		exit(0);
	}

	done = findfirst(argv[1], &ffblk, 0);
	while (done == 0) {
		fnames[num_found] = malloc(strlen(ffblk.ff_name) + 1);
		strcpy(fnames[num_found++], ffblk.ff_name);
		done = findnext(&ffblk);
	}

	for(i = 0; i < num_found; i++)
		convert(fnames[i]);

	printf("OK.\n");

	for(i = 0; i < num_found; i++)
		free(fnames[i]);
}


convert(char *unixfname)
{
	static unsigned char buffer[32768];
	FILE *unixf, *dosf;
	unsigned i, numread;

	unixf = fopen(unixfname, "rb");
	dosf = fopen("DOSTEMP.$$$","wb");

	printf("Converting %s...\n", unixfname);

	do {
		numread = fread(buffer,1,sizeof(buffer),unixf);
		for(i = 0; i < numread; i++) {
			if(buffer[i] == 0x0A)
				fwrite("\x0D", 1, 1, dosf);
			fwrite(&buffer[i], 1, 1, dosf);
		}
	} while(numread == sizeof(buffer));

	fclose(unixf);
	fclose(dosf);

	remove(unixfname);
	rename("DOSTEMP.$$$", unixfname);
}