Yet Another Push for (MS)PCDOS (works w/ join)
Craig Dawson X2267
cxd at genrad.UUCP
Wed Aug 6 07:33:16 AEST 1986
-------
Below is a shar for push, pop, and dirs for the PC/AT.
They are written in Microsoft 'C'. I wrote (reads: hacked)
them because the public domain version I had wouldn't work with
the JOIN command. To compile use the 'cl' or 'msc' with your
favorite options (I didn't use any). Please E-Mail any questions,
I will try to reply promptly.
Enjoy,
Craig
---------------------------------------------------------
...decvax!genrad!cxd (Craig Dawson x2267)
What's a little metamorphosis between friends?
Disclaimer: all standard one's apply
----------------------------------------------------------------------------
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
# dirs.c
# pop.c
# push.c
# This archive created: Tue Aug 5 16:19:41 1986
# By: Craig Dawson X2267 (GenRad, Inc. Test Systems & Instruments Group Concord, MA)
export PATH; PATH=/bin:/usr/bin:$PATH
echo shar: "extracting 'dirs.c'" '(841 characters)'
if test -f 'dirs.c'
then
echo shar: "will not over-write existing file 'dirs.c'"
else
cat << \Yet-Another-Tool > 'dirs.c'
/* dirs.c Thu Jul 31 16:48:52 1986 cxd Author */
#include <stdio.h>
#include <direct.h>
#include <stdlib.h>
#define BUF_LEN 100
main(argc, argv)
int argc;
char *argv[];
{
char buffer[BUF_LEN + 1];
FILE *fid_in;
char storage_for_stack_file[13], *stack_file;
if ((stack_file = getenv("DIRS")) == NULL)
{
strcpy(storage_for_stack_file, "\\%%dirs.dat");
stack_file = storage_for_stack_file;
}
if ((fid_in = fopen(stack_file, "r")) == NULL)
{
printf("dirs: directory stack empty.\n");
exit(1);
}
while (!feof(fid_in))
{
if (fgets(buffer, BUF_LEN, fid_in) != NULL)
{
buffer[strlen(buffer) - 1] = '\0';
printf("%s ", buffer);
}
}
printf("\n");
fclose(fid_in);
exit(0);
}
Yet-Another-Tool
fi
echo shar: "extracting 'pop.c'" '(1462 characters)'
if test -f 'pop.c'
then
echo shar: "will not over-write existing file 'pop.c'"
else
cat << \Yet-Another-Tool > 'pop.c'
/* pop.c Thu Jul 31 16:48:52 1986 cxd Author */
#include <stdio.h>
#include <direct.h>
#include <stdlib.h>
#define BUF_LEN 100
main(argc, argv)
int argc;
char *argv[];
{
char buffer[BUF_LEN + 1], dir[BUF_LEN + 1];
int wrote_out = 0;
FILE *fid_in, *fid_out;
char storage_for_stack_file[13], *stack_file;
if ((stack_file = getenv("DIRS")) == NULL)
{
strcpy(storage_for_stack_file, "\\%%dirs.dat");
stack_file = storage_for_stack_file;
}
if ((fid_in = fopen(stack_file, "r")) == NULL)
{
printf("pop: directory stack empty.\n");
exit(1);
}
if ((fid_out = fopen(stack_file, "w")) == NULL)
{
perror("couldn't open data file");
exit(1);
}
fgets(buffer, BUF_LEN, fid_in);
buffer[strlen(buffer) - 1] = '\0';
strcpy(dir, buffer);
while (!feof(fid_in))
{
if (fgets(buffer, BUF_LEN, fid_in) != NULL)
{
buffer[strlen(buffer) - 1] = '\0';
fprintf(fid_out, "%s\n", buffer);
printf("%s ", buffer);
wrote_out = 1;
}
}
printf("\n");
fclose(fid_in);
fclose(fid_out);
if (!wrote_out)
{
if (unlink(stack_file))
{
perror("couldn't delete empty data file");
exit(1);
}
}
if (chdir(dir) != NULL)
{
perror("couldn't change directory");
exit(1);
}
exit(0);
}
Yet-Another-Tool
fi
echo shar: "extracting 'push.c'" '(2322 characters)'
if test -f 'push.c'
then
echo shar: "will not over-write existing file 'push.c'"
else
cat << \Yet-Another-Tool > 'push.c'
/* push.c Mon Jul 28 16:59:59 1986 cxd Author */
#include <stdio.h>
#include <direct.h>
#include <stdlib.h>
#define BUF_LEN 100
main(argc, argv)
int argc;
char *argv[];
{
char buffer[BUF_LEN + 1], dir[BUF_LEN + 1];
FILE *fid_in, *fid_out;
int file_there = 1, first_dir = 1;
char storage_for_stack_file[13], *stack_file;
void chkdir();
if (argc > 2)
{
printf("usage: push [dirspec]\n");
exit(0);
}
if (argc == 2)
{
chkdir(argv[1]);
}
if ((stack_file = getenv("DIRS")) == NULL)
{
strcpy(storage_for_stack_file, "\\%%dirs.dat");
stack_file = storage_for_stack_file;
}
if ((fid_in = fopen(stack_file, "r")) == NULL)
{
if (argc == 1)
{
printf("push: directory stack empty.\n");
exit(1);
}
else
file_there = 0;
}
if ((fid_out = fopen(stack_file, "w")) == NULL)
{
perror("couldn't open data file");
exit(1);
}
if (getcwd(buffer,BUF_LEN) == NULL)
{
perror("error getting current working directory");
exit(1);
}
fprintf(fid_out, "%s\n", buffer);
printf("%s ", buffer);
if (file_there)
{
while (!feof(fid_in))
{
if (fgets(buffer, BUF_LEN, fid_in) != NULL)
{
buffer[strlen(buffer) - 1] = '\0';
if (!(first_dir && argc == 1))
{
fprintf(fid_out, "%s\n", buffer);
printf("%s ", buffer);
}
if (first_dir)
strcpy(dir, buffer);
first_dir = 0;
}
}
}
printf("\n");
if (argc > 1)
strcpy(dir, argv[1]);
if (chdir(dir) != NULL)
{
perror("couldn't change directory");
exit(1);
}
if (file_there)
fclose(fid_in);
fclose(fid_out);
exit(0);
}
void chkdir( dirnm )
char *dirnm;
{
char buffer[100];
FILE *stream;
strcpy(buffer, dirnm);
if (strcmp(buffer, "\\") == 0)
strcat(buffer, "%%dirs.tst", 11);
else
strcat(buffer, "\\%%dirs.tst", 13);
if ((stream = fopen(buffer, "w")) == NULL)
{
perror(dirnm);
exit(1);
}
fclose(stream);
unlink(buffer);
return;
}
Yet-Another-Tool
fi
exit 0
# End of shell archive
--
---------------------------------------------------------
...decvax!genrad!cxd (Craig Dawson x2267)
What's a little metamorphosis between friends?
More information about the Comp.sources.unix
mailing list