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
Revision as of 11:18, 23 July 2020 by Netfreak (talk | contribs) (Created page with "<pre> →‎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>...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
/* 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);
}