summaryrefslogtreecommitdiffstats
path: root/misc-utils/dsplit.c
diff options
context:
space:
mode:
Diffstat (limited to 'misc-utils/dsplit.c')
-rw-r--r--misc-utils/dsplit.c271
1 files changed, 0 insertions, 271 deletions
diff --git a/misc-utils/dsplit.c b/misc-utils/dsplit.c
deleted file mode 100644
index c3c22a305..000000000
--- a/misc-utils/dsplit.c
+++ /dev/null
@@ -1,271 +0,0 @@
-#ifdef lint
- static char RCSid[] = "$RCSfile: dsplit.c,v $ $Revision: 1.9 $ $Date: 1995/03/12 01:31:03 $";
-#endif
-/*
- Program dsplit: Splits a large file into pieces.
-
- Usage:
- dsplit [-size nnn] [input_file [output_base]]
- Size is size of each output file, in bytes. The default is 1457000,
- enough to fill a "1.44MB" diskette, save 152 bytes.
- input_file is the name of the file to split up. A dash (-) indicates
- standard input. Defaults to standard input.
- output_base is the name of the output files to be written, minus the
- extension. Dsplit adds suffixes 000, 001, ...
- The default base name is dsplit.
-*/
-#include <ctype.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#if (defined (__MSDOS__) || defined (WIN32))
-#include <io.h>
-#include <fcntl.h>
-#endif /* __MSDOS__ or WIN32 */
-#ifndef FILENAME_MAX
-#define FILENAME_MAX 1024
-#endif
-
-#define DEFAULT_NAME "dsplit"
-#define DEFAULT_SIZE 1457000L
-#if (defined (__MSDOS__) || defined (WIN32))
-# define READ_OPTIONS "rb"
-# define WRITE_OPTIONS "wb"
-#else
-# define READ_OPTIONS "r"
-# define WRITE_OPTIONS "w"
-#endif /* __MSDOS__ or WIN32 */
-
-#ifndef MIN
-#define MIN(a,b) (((a) <= (b)) ? (a) : (b))
-#endif
-
-static unsigned long output_size = DEFAULT_SIZE;
-static char* base_name = DEFAULT_NAME;
-static FILE* input_handle;
-static char* input_name = "-";
-
-#ifdef __STDC__
-static void init (int argc, char* argv[]);
-static int write_one (int count);
-static void ToLower (char* string);
-static void usage_error (void);
-#else /* not __STDC__ */
-static void init (/* int argc, char* argv[] */);
-static int write_one (/* int count */);
-static void ToLower (/* char* string */);
-static void usage_error (/* void */);
-#endif /* __STDC__ */
-
-
-
-#ifdef __STDC__
-int main (int argc, char* argv[])
-#else
-int main (argc, argv)
-int argc;
-char* argv[];
-#endif
-{
- int count;
-
- /* Process command line arguments, open input file. */
- init (argc, argv);
-
- /* Write the output files */
- for (count = 0 ; write_one (count) ; ++count)
- ;
-
- /* Close input file (a matter of style) */
- if (fclose (input_handle) != 0)
- {
- (void)fprintf (stderr, "Could not close file \"%s\" for input\n",
- input_name);
- return 1;
- }
-
- /* Normal successful conclusion */
- return 0;
-}
-
-
-
-#ifdef __STDC__
-static void init (int argc, char* argv[])
-#else
-static void init (argc, argv)
-int argc;
-char* argv[];
-#endif
-{
- int iarg;
- int name_count;
-
- /* Initialize the input file handle to standard input. IBM's Toolset++
- won't let me do this statically, unfortunately. */
- input_handle = stdin;
-
- /* Initialize for following loop */
- name_count = 0;
-
- /* Loop over command line arguments */
- for (iarg = 1 ; iarg < argc ; ++iarg)
- {
- /* Point to argument,for convenience */
- char* arg = argv[iarg];
-
- /* If this argument is an option */
- if (arg[0] == '-' && arg[1] != '\0')
- {
- /* Process option if recognized */
- ToLower (arg+1);
- if (strcmp (arg+1, "size") != 0)
- usage_error ();
- ++iarg;
- if (iarg >= argc)
- usage_error ();
- arg = argv[iarg];
- if (sscanf (arg, "%ld", &output_size) != 1)
- {
- (void)fprintf (stderr, "Illegal numeric expression \"%s\"\n", arg);
- exit (1);
- }
- }
- else /* argument is not an option */
- {
- /* Argument is a name string. Determine which one. */
- switch (name_count)
- {
- case 0:
- input_name = argv[iarg];
- break;
- case 1:
- base_name = argv[iarg];
- break;
- default:
- usage_error ();
- break;
- }
- ++name_count;
-
- } /* End if this argument is an option */
-
- } /* End loop over command line arguments */
-
- /* Open the input file */
- if (strcmp (input_name, "-") == 0)
- {
-# if (defined (__MSDOS__) || defined (WIN32))
- if (setmode (0, O_BINARY) == -1)
- {
- perror ("dsplit: setmode");
- exit (1);
- }
-# endif
- }
- else
- {
- if ((input_handle = fopen (input_name, READ_OPTIONS)) == NULL)
- {
- (void)fprintf (stderr, "Could not open file \"%s\" for input\n",
- input_name);
- exit (1);
- }
- }
-}
-
-
-
-#ifdef __STDC__
-static int write_one (int count)
-#else
-static int write_one (count)
-int count;
-#endif
-{
- char output_name[FILENAME_MAX];
- int bytes_written;
- unsigned long total_written;
- FILE* output_handle;
-
- /* Read the first buffer full now, just to see if any data is left */
- static char buff[1024];
- int to_read = MIN (sizeof(buff), output_size);
- int bytes_read = fread (buff, 1, to_read, input_handle);
- if (bytes_read <= 0)
- return 0;
-
- /* Open file for output */
- sprintf (output_name, "%s.%03d", base_name, count);
- output_handle = fopen (output_name, WRITE_OPTIONS);
- if (output_handle == NULL)
- {
- (void)fprintf (stderr,
- "Could not open file \"%s\" for output\n", output_name);
- exit (1);
- }
-
- /* Write the first output buffer */
- bytes_written = fwrite (buff, 1, bytes_read, output_handle);
- if (bytes_written != bytes_read)
- {
- (void)fprintf (stderr, "Error writing to file \"%s\"\n", output_name);
- exit (1);
- }
- total_written = bytes_written;
-
- /* Write output file */
- while (total_written < output_size)
- {
- to_read = MIN (sizeof(buff), output_size-total_written);
- bytes_read = fread (buff, 1, to_read, input_handle);
- if (bytes_read <= 0)
- break;
- bytes_written = fwrite (buff, 1, bytes_read, output_handle);
- if (bytes_written != bytes_read)
- {
- (void)fprintf (stderr, "Error writing to file \"%s\"\n", output_name);
- exit (1);
- }
- total_written += bytes_written;
- }
-
- /* Close the output file, it is complete */
- if (fclose (output_handle) != 0)
- {
- (void)fprintf (stderr,
- "Could not close file \"%s\" for output\n", output_name);
- exit (1);
- }
-
- /* Indicate whether more data remains to be transferred */
- return (bytes_read == to_read);
-}
-
-
-
-#ifdef __STDC__
-static void ToLower (char* string)
-#else
-static void ToLower (string)
-char* string;
-#endif
-{
-
- while (*string != '\0')
- tolower (*string++);
-}
-
-
-
-#ifdef __STDC__
-static void usage_error (void)
-#else
-static void usage_error ()
-#endif
-{
- (void)fprintf (stderr,
- "Usage: dsplit [-size nnn] [input_file [output_base]]\n");
- exit (1);
-}
-