[comp.soft-sys.andrew] Error building ness documentation, Andrew PL 6

cwitty@csli.Stanford.EDU (Carl Witty) (08/17/90)

Evidently, ness has changed in such a way that
.../atk/ness/doc/present.n no longer works.  Given a file name
'nessauth.d', it is supposed to create 'nessauth.doc'; instead, it
creates 'present.n nessauth.doc' (a filename with an embedded space.)
I don't know ness, so I can't understand present.n well enough to know
what it's trying to do.

This worked in PL 5.

Carl Witty
cwitty@cs.stanford.edu

wjh+@ANDREW.CMU.EDU (Fred Hansen) (08/17/90)

Excerpts from internet.info-andrew: 17-Aug-90 Error building ness
documen.. Carl Witty@decwrl.dec.co (399)

> .../atk/ness/doc/present.n no longer works.  Given a file name
> 'nessauth.d', it is supposed to create 'nessauth.doc'; instead, it
> creates 'present.n nessauth.doc' (a filename with an embedded space.)

This bug has been corrected, but--I am sorry to have to report--did not
make its way into patch 6.  Presumably it will be in patch 7.  

For those of you willing to risk bypassing the regular patch mechanism,
the correction is to replace the ParseArgs routine in
atk/ness/objects/nessruna.c with the new version below.

Fred Hansen



	boolean 
nessrunapp__ParseArgs(self, argc, argv)
	struct nessrunapp *self;
	int argc;
	char **argv;
{
	struct nessmark *arg, *args, *blank;

	if(!super_ParseArgs(self, argc, argv))
		return FALSE;

	/* super_ParseArgs() passes across the "runapp" and its switches,
		leaving "nessrun" as the first arg.   */

	while(*++argv != NULL && **argv == '-') {
		switch((*argv)[1]){
			case 'd':		
				self->dump = TRUE;
				break;
			case 'f':		
				nessrunapp_SetFork(self, TRUE);
				break;
			default:
				fprintf(stderr,"%s: unrecognized switch: %s\n",
					nessrunapp_GetName(self), *argv);
				show_usage(self);
				return FALSE;
		}
	}

	if (*argv == NULL) {
		fprintf(stderr,"%s: no programfilename specified\n",
				nessrunapp_GetName(self));
		show_usage(self);
		return FALSE;
	}

	/* get the name of the ness program file */
	self->inputfile = *argv++;

	if (*argv != NULL) {
		/* concatenate args to pass to theNess */

		blank = nessmark_New();
		nessmark_MakeConst(blank, " ");
		arg = nessmark_New();
		args = nessmark_New();
		nessmark_SetText(args, simpletext_New());
		while (*argv != NULL) {
			nessmark_MakeConst(arg, *argv);
			nessmark_Next(args);
			nessmark_Replace(args, arg);
			nessmark_Next(args);
			nessmark_Replace(args, blank);
			argv++;
		}
		nessmark_Base(args);
		ness_SupplyMarkerArg(self->theNess, args);
	}
	return TRUE;
}