v11i076: catcher - drag and drop manager, Patch1, Part01/01
Chuck Musciano
chuck at trantor.harris-atd.com
Fri Feb 15 18:34:27 AEST 1991
Submitted-by: Chuck Musciano <chuck at trantor.harris-atd.com>
Posting-number: Volume 11, Issue 76
Archive-name: catcher/patch1
Patch-To: catcher: Volume 11, Issue 6-10
My apologies to those of you who built catcher only to discover that
it wouldn't even work with the samples I packed with it. I have since
fixed several minor but fatal bugs, and this patch should give you a
much happier tool.
Catcher is a tool that lets you write scripts which build small windowed
tools that can catch and process "drag and drop" files and text.
Again, my apologies for such a buggy first release.
Chuck Musciano ARPA : chuck at trantor.harris-atd.com
Harris Corporation Usenet: ...!uunet!x102a!trantor!chuck
PO Box 37, MS 3A/1912 AT&T : (407) 727-6131
Melbourne, FL 32902 FAX : (407) 729-3363
A good newspaper is never good enough,
but a lousy newspaper is a joy forever. -- Garrison Keillor
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of shell archive."
# Contents: patch
# Wrapped by chuck at melmac on Tue Jan 29 12:41:23 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patch' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'patch'\"
else
echo shar: Extracting \"'patch'\" \(8362 characters\)
sed "s/^X//" >'patch' <<'END_OF_FILE'
X*** Makefile.orig Tue Jan 29 12:39:44 1991
X--- Makefile Tue Jan 22 07:32:58 1991
X***************
X*** 43,49 ****
X install: catcher $(MAN)/catcher.$(MANEXT)
X cp catcher $(BIN)
X chmod 755 $(BIN)/catcher
X- cp catcher.info $(HELPDIR)
X
X $(MAN)/catcher.$(MANEXT): catcher.man
X cp -p catcher.man $(MAN)/catcher.$(MANEXT)
X--- 43,48 ----
X*** Imakefile.orig Tue Jan 29 12:39:47 1991
X--- Imakefile Tue Jan 22 07:32:57 1991
X***************
X*** 20,26 ****
X ComplexProgramTarget(catcher)
X
X install:: install.man
X- $(INSTALL) -c $(INSTMANFLAGS) catcher.info $(HELPDIR)/catcher.info
X
X manual:
X cd doc; make PRINT="$(PRINT)" PRINTER="$(PRINTER)" manual
X--- 20,25 ----
X*** README.orig Tue Jan 29 12:39:47 1991
X--- README Tue Jan 29 12:37:00 1991
X***************
X*** 107,109 ****
X--- 107,115 ----
X *********************************************************************************
X
X 1.0 16 Jan 91 Original release
X+
X+ 1.0a 29 Jan 91 Patch 1
X+ Fixed Imakefile
X+ Corrected bug in parser
X+ Corrected handling of suffix string
X+ Renamed ungetc to last_char in lex.c
X*** lex.c.orig Tue Jan 29 12:39:53 1991
X--- lex.c Tue Jan 29 12:33:55 1991
X***************
X*** 52,59 ****
X {"value", VALUE},
X {"window", WINDOW_}};
X
X-
X-
X PRIVATE struct {char first;
X char next;
X int name;
X--- 52,57 ----
X***************
X*** 73,85 ****
X curr_file = "stdin";
X f = stdin;
X line_count = 1;
X! ungetc = -1;
X return(TRUE);
X }
X else if (f = fopen(path, "r")) {
X curr_file = strsave(path);
X line_count = 1;
X! ungetc = -1;
X return(TRUE);
X }
X else
X--- 71,83 ----
X curr_file = "stdin";
X f = stdin;
X line_count = 1;
X! last_char = -1;
X return(TRUE);
X }
X else if (f = fopen(path, "r")) {
X curr_file = strsave(path);
X line_count = 1;
X! last_char = -1;
X return(TRUE);
X }
X else
X***************
X*** 92,99 ****
X { register char c;
X static int first = TRUE;
X
X! if (ungetc != -1)
X! c = ungetc, ungetc = -1;
X else if (f == NULL)
X return(EOF);
X else {
X--- 90,97 ----
X { register char c;
X static int first = TRUE;
X
X! if (last_char != -1)
X! c = last_char, last_char = -1;
X else if (f == NULL)
X return(EOF);
X else {
X***************
X*** 182,188 ****
X *p++ = c;
X while (isalnum(c = getch()) || c == '_')
X *p++ = c;
X! ungetc = c;
X *p = '\0';
X temp = strsave(buf);
X for (p = buf; *p; p++)
X--- 180,186 ----
X *p++ = c;
X while (isalnum(c = getch()) || c == '_')
X *p++ = c;
X! last_char = c;
X *p = '\0';
X temp = strsave(buf);
X for (p = buf; *p; p++)
X***************
X*** 220,226 ****
X while (isdigit(c = getch()))
X *p++ = c;
X *p = '\0';
X! ungetc = c;
X yylval.ival = atoi(buf);
X RETURN(INTEGER);
X }
X--- 218,224 ----
X while (isdigit(c = getch()))
X *p++ = c;
X *p = '\0';
X! last_char = c;
X yylval.ival = atoi(buf);
X RETURN(INTEGER);
X }
X***************
X*** 240,246 ****
X for (c1 = getch(), j = 1; punc[i + j].first == c; j++)
X if (c1 == punc[i + j].next)
X RETURN(punc[i + j].name);
X! ungetc = c1;
X RETURN(punc[i].name);
X }
X yyerror("Invalid character in source file: %c (0x%02x)", c, c);
X--- 238,244 ----
X for (c1 = getch(), j = 1; punc[i + j].first == c; j++)
X if (c1 == punc[i + j].next)
X RETURN(punc[i + j].name);
X! last_char = c1;
X RETURN(punc[i].name);
X }
X yyerror("Invalid character in source file: %c (0x%02x)", c, c);
X*** parse.y.orig Tue Jan 29 12:39:58 1991
X--- parse.y Tue Jan 29 12:33:56 1991
X***************
X*** 30,42 ****
X
X EXPORT int parse_errors_occured;
X
X! EXPORT Catch config = {NULL, NULL, "Catcher", NULL, '$', '{', '}', NULL, NULL};
X
X PRIVATE char *get_last_token();
X
X PRIVATE char *curr_file;
X PRIVATE int line_count = 1;
X! PRIVATE char ungetc = -1;
X
X PRIVATE Command *curr_cmd;
X PRIVATE Option *curr_opt;
X--- 30,42 ----
X
X EXPORT int parse_errors_occured;
X
X! EXPORT Catch config = {NULL, NULL, "Catcher 1.0a", NULL, '$', '{', '}', NULL, NULL};
X
X PRIVATE char *get_last_token();
X
X PRIVATE char *curr_file;
X PRIVATE int line_count = 1;
X! PRIVATE char last_char = -1;
X
X PRIVATE Command *curr_cmd;
X PRIVATE Option *curr_opt;
X***************
X*** 59,66 ****
X
X %token LBRACE RBRACE
X
X! %token BY CHOICE COMMAND DEFAULT DELIMITER EXCLUSIVE FINISH HORIZONTAL ICON_ ICON_MASK INIT LABEL
X! %token MESSAGE NONEXCLUSIVE NUMERIC OPTIONAL OUTPUT PARAMETER START SUFFIX TEXT TO VALUE WINDOW_
X
X %type <chval> anon_choice choice
X %type <cpval> command_name delimiter icon icon_mask label message suffix text_init value
X--- 59,66 ----
X
X %token LBRACE RBRACE
X
X! %token BY CHOICE COMMAND DEFAULT DELIMITER EXCLUSIVE HORIZONTAL ICON_ ICON_MASK INIT LABEL
X! %token MESSAGE NONEXCLUSIVE NUMERIC OPTIONAL OUTPUT PARAMETER SUFFIX TEXT TO VALUE WINDOW_
X
X %type <chval> anon_choice choice
X %type <cpval> command_name delimiter icon icon_mask label message suffix text_init value
X***************
X*** 383,389 ****
X
X { char buf1[1024], buf2[1024];
X
X! sprintf(buf1, "%s: line %d: ", curr_file, line_count - ((ungetc == '\n')? 1 : 0));
X sprintf(buf2, s1, s2, s3, s4, s5, s6, s7);
X strcat(buf1, buf2);
X if (strcmp(s1, "syntax error") == 0) {
X--- 383,389 ----
X
X { char buf1[1024], buf2[1024];
X
X! sprintf(buf1, "%s: line %d: ", curr_file, line_count - ((last_char == '\n')? 1 : 0));
X sprintf(buf2, s1, s2, s3, s4, s5, s6, s7);
X strcat(buf1, buf2);
X if (strcmp(s1, "syntax error") == 0) {
X*** patchlevel.h.orig Tue Jan 29 12:40:00 1991
X--- patchlevel.h Tue Jan 29 12:11:30 1991
X***************
X*** 0 ****
X--- 1,29 ----
X+ /************************************************************************/
X+ /* Copyright 1987-1991 by Chuck Musciano and Harris Corporation */
X+ /* */
X+ /* Full ownership of this software, and all rights pertaining to */
X+ /* the for-profit distribution of this software, are retained by */
X+ /* Chuck Musciano and Harris Corporation. You are permitted to */
X+ /* use this software without fee. This software is provided "as */
X+ /* is" without express or implied warranty. You may redistribute */
X+ /* this software, provided that this copyright notice is retained, */
X+ /* and that the software is not distributed for profit. If you */
X+ /* wish to use this software in a profit-making venture, you must */
X+ /* first license this code and its underlying technology from */
X+ /* Harris Corporation. */
X+ /* */
X+ /* Bottom line: you can have this software, you can use it, you */
X+ /* can give it away. You just can't sell any or all parts of it */
X+ /* without prior permission from Harris Corporation. */
X+ /************************************************************************/
X+
X+ /************************************************************************/
X+ /* */
X+ /* Patch Comments */
X+ /* 0 Initial release */
X+ /* comp.sources.x: Volume 11, Issues 6-10 */
X+ /* */
X+ /* 1 Bug fixes; see README for details */
X+ /* comp.sources.x: Volume 11, Issue ? */
X+ /* */
X+ /************************************************************************/
X*** process.c.orig Tue Jan 29 12:40:01 1991
X--- process.c Tue Jan 29 12:33:57 1991
X***************
X*** 340,350 ****
X { char *path;
X FILE *f;
X
X! path = (char *) malloc(strlen(config.suffix) + 22);
X strcpy(path, "/tmp/catcher.XXXXXX");
X mktemp(path);
X! strcat(path, ".");
X! strcat(path, config.suffix);
X if ((f = fopen(path, "w")) == NULL)
X error("cannot open %s for writing: %s", path, sys_errlist[errno]);
X else if (fwrite(data, 1, strlen(data), f) != strlen(data)) {
X--- 340,352 ----
X { char *path;
X FILE *f;
X
X! path = (char *) malloc((config.suffix? strlen(config.suffix) : 0) + 22);
X strcpy(path, "/tmp/catcher.XXXXXX");
X mktemp(path);
X! if (config.suffix) {
X! strcat(path, ".");
X! strcat(path, config.suffix);
X! }
X if ((f = fopen(path, "w")) == NULL)
X error("cannot open %s for writing: %s", path, sys_errlist[errno]);
X else if (fwrite(data, 1, strlen(data), f) != strlen(data)) {
END_OF_FILE
if test 8362 -ne `wc -c <'patch'`; then
echo shar: \"'patch'\" unpacked with wrong size!
fi
# end of 'patch'
fi
echo shar: End of shell archive.
exit 0
--
Dan Heller
------------------------------------------------
O'Reilly && Associates Zyrcom Inc
Senior Writer President
argv at ora.com argv at zipcode.com
More information about the Comp.sources.x
mailing list