🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Marta Kallstrom Sat, 18 Nov 1989 01:19
make-3.56 alterations
#549
Author: Marta Kallstrom
Date: Sat, 18 Nov 1989 01:19
60 lines
2789 bytes
I have finished porting make-3.56 to the Cogent Research
XTM -- a distributed parallel system with a UNIX-like OS,
based on a Linda communication mechanism.  This is our 
first upgrade since 3.27, which we are shipping with our 
system.  Incidentally, we are very happy with your software!
	
I found two problems in 3.56, which I hope have been fixed
in later versions, but in case they haven't, I'll explain
them.  (I did not run a "diff" on our files since we differ
in more areas than those I am going to mention.)
	
1.  The archiver on the XTM is not compatible with UNIX ar,
so I defined NO_ARCHIVES.  In commands.c, set_file_variables(),
I moved the #endif of the #ifndef NO_ARCHIVES above the "else".  
Otherwise, automatic variables "at" and "percent" are not 
initialized, thus disabling all other automatic variables 
except "star".  (Actually, their value fields are full of
garbage.)

2.  I needed to reinstate return values for three functions:
execute_file_commands(), notice_finished_file(), and remake_file().
Without these return values, if job_slots > 1 (which it often is
on our parallel system), execute_file_commands() no longer
differentitates between targets whose jobs are finished and
those whose jobs are still running.  When execute_file_commands()
returns to remake_file(), the latter routine assumes that all
jobs for the target are finished and sets the file's command_state
to cs_finished, but the file's update_status may not be set, so
an error results.

The changes I made are:

commands.c:
  execute_file_commands(): return integer status
	return 0 on command_state == cs_running
	return file->update_status on command_state == cs_finished
	return 0 on *p == '\0'
	return notice_finished_file(file) on if (status) and 
		and on else if (job_slots == 1)
	return 0 at end of function

remake.c
  notice_finished_file(): return integer status
	return file->update_status at end of function
  remake_file(): return integer status
	status = execute_file_commands(file)
	if (file->command_state == cs_finished) {
	      file->update_status = status;
	      return notice_finished_file(file);
	}else return 0;
  update_file_1():  (no change in declaration)
	file->update_status = remake_file(file)


I hope you can make use of this.

Marta Kallstrom
Software Engineer
Cogent Research, Inc.
marta@cse.ogc.edu
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads