🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: net.micro.atari16
Article #2461

AUTOCOPY, Utility to copy files at system boot

#2461
From: TPC862
Date: Mon, 20 Oct 1986 14:30
145 lines
4802 bytes
Here a utility I made to use in the AUTO folder on boot disks without the Micro
C-Shell or similar. It copies a number of files from e.g. floppy to ramdisk.
It is not the utmost of sophistication (no wildcarding), but it works.
Enjoy.
----------------cut here-----autocopy.doc--------------------------------------
PROGRAM
   AUTOCOPY - Auto program to copy files at system boot

FUNCTION
   This program is to be placed in the \AUTO folder on the boot disk.
   It can be used to copy your favourite files to a ramdisk (which of
   course must exist before this program is run).
   It looks for the file \AUTO\AUTOCOPY.DAT which describes the files
   to be copied. The format of a line in AUTOCOPY.DAT is:

      <source file>  <destination file>

   An example :

      a:\xemacs.tos   d:\xemacs.tos
      a:\make.prg     d:\make.prg
      a:\gemstart.o   d:\gemstart.o
      a:\osbind.o     d:\osbind.o
      a:\gemlib       d:\gemlib
      a:\aesbind      d:\aesbind
      a:\vdibind      d:\vdibind
      a:\libf         d:\libf

CAVEATS
   Source and destination files must be specified with full path names
   in AUTOCOPY.DAT. No wildcards allowed.
   AUTOCOPY will not overwrite existing files (no extra copy at reset
   when files are still in the ramdisk).
   Linelength in AUTOCOPY.DAT is limited to 80 characters, so no very
   long path names.
----------------cut here-----end of autocopy.doc-------------------------------

And now the program written with Alcyon C. Link with gemstart.o, osbind.o and
gemlib.

----------------cut here-----autocopy.c----------------------------------------
/*
 * autocopy.c - Program to copy files on startup
 */

#include <stdio.h>
#include <ctype.h>
#include <osbind.h>

int cp(linebuf)
register char *linebuf;
{
   char source[128], dest[128];
   char buf[4096];
   register char *p;
   register int fsource, fdest;
   register long count;

   while(isspace(*linebuf)) linebuf++;
   if (*linebuf == '\0') {		/* no source specified */
      return 1;
   }

   for (p = source; !isspace(*linebuf) && (*linebuf != '\0');
        *p++ = *linebuf++) /* copy */ ;
   *p = '\0';

   while (isspace(*linebuf)) linebuf++;
   if (*linebuf == '\0') {		/* no destination specified */
      fprintf(stderr,"No destination file specified\n");
      return 2;
   }

   for(p = dest; !isspace(*linebuf) && (*linebuf != '\0');
       *p++ = *linebuf++) /* copy */ ;
   *p = '\0';

   if ((fdest = Fopen(dest, 0)) > 0) {
      fprintf(stderr, "Will not overwrite %s\n", dest);
      Fclose(fdest);
      return 3;
   }

   if ((fsource = Fopen(source, 0)) < 0) {
      fprintf(stderr, "%s: no such file\n", source);
      return 4;
   }

   if ((fdest = Fcreate(dest, 0)) < 0) {
      fprintf(stderr, "%s: cannot open for write\n", dest);
      Fclose(fsource);
      return 5;
   }

   printf("Copying %s to %s\n", source, dest);
   while ((count = Fread(fsource, 4096L, buf)) > 0) {
      if (Fwrite(fdest, count, buf) != count) {
         fprintf(stderr, "Error writing %s\n", dest);
         Fclose(fsource);
         Fclose(fdest);
         return 6;
      }
   }
   if (count < 0) {
      fprintf(stderr, "Error reading %s\n", source);
   }

   Fclose(fsource);
   Fclose(fdest);

   return 0;
}

main()
{
   FILE *fsource;
   FILE *fopen();
   char buf[82];

   printf("\033E                AUTOCOPY V1.0\n\n");

   if ((fsource = fopen("\\AUTO\\AUTOCOPY.DAT", "r")) == (FILE *)0) {
      fprintf(stderr,"\\AUTO\\AUTOCOPY.DAT not found\n");
      return 3;
   }

   while (!(feof(fsource))) {
     fgets(buf, 82, fsource);
     if ferror(fsource) break ;
     else               cp(buf);
   }
   fclose(fsource);

   printf("\nAUTOCOPY finished\n");
}
----------------cut here-----end of autocopy.c---------------------------------
Ton van Overbeek
European Space Research and Technology Centre (ESTEC)
Control Systems Section
P.O.Box 299
2200 AG Noordwijk, The Netherlands.
Phone: +31 1719 83041
Email: TPC862%ESTEC.BITNET@WISCVM.WISC.EDU  (ARPA)
       ...!ucbvax!tpc862@estec.bitnet       (USENET/UUCP)
       TPC862@ESTEC                         (EARN/BITNET)
Technical Details
Message-ID: <8610200843.AA23209@ucbvax.Berkeley.EDU>
Path: arc1-ca.pugleaf.net!utzoo!watmath!clyde!caip!rutgers!sri-spam!sri-unix!hplabs!ucbvax!ESTEC.BITNET!TPC862

Show Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: arc1-ca.pugleaf.net!utzoo!watmath!clyde!caip!rutgers!sri-spam!sri-unix!hplabs!ucbvax!ESTEC.BITNET!TPC862
From: TPC862@ESTEC.BITNET
Newsgroups: net.micro.atari16
Subject: AUTOCOPY, Utility to copy files at system boot
Message-ID: <8610200843.AA23209@ucbvax.Berkeley.EDU>
Date: Mon, 20-Oct-86 10:30:59 EDT
Article-I.D.: ucbvax.8610200843.AA23209
Posted: Mon Oct 20 10:30:59 1986
Date-Received: Tue, 21-Oct-86 22:47:05 EDT
Sender: daemon@ucbvax.BERKELEY.EDU
Organization: The ARPA Internet
Lines: 145