home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-12-22 | 86.8 KB | 2,478 lines |
- Newsgroups: comp.sources.unix
- From: pleierc@informatik.tu-muenchen.de (Christoph Pleier)
- Subject: v27i181: distributed-c-2.1 - Distributed C Development Environment, V2.1, Part07/18
- References: <1.756634932.28500@gw.home.vix.com>
- Sender: unix-sources-moderator@gw.home.vix.com
- Approved: vixie@gw.home.vix.com
-
- Submitted-By: pleierc@informatik.tu-muenchen.de (Christoph Pleier)
- Posting-Number: Volume 27, Issue 181
- Archive-Name: distributed-c-2.1/part07
-
- #! /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 archive 7 (of 18)."
- # Contents: config/debug.c config/system.y dcadmin/Status.c
- # dcinstall/Compile.c dcinstall/ParseOptions.c dcinstall/main.c
- # include/com_Errno.h include/globals.h include/run_errlist.h
- # ipc/p1.c
- # Wrapped by vixie@gw.home.vix.com on Thu Dec 23 00:12:00 1993
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'config/debug.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'config/debug.c'\"
- else
- echo shar: Extracting \"'config/debug.c'\" \(9082 characters\)
- sed "s/^X//" >'config/debug.c' <<'END_OF_FILE'
- X/***************************************************************************
- X * *
- X * @@@@ @@@ @@@@@ @@@@@ @@@@@ @@@ @@@@ @ @ @@@@@ @@@@@ @@@@ @@@ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @ @ @ @@@@@ @ @@@@@ @ @@@@@ @ @ @ @@@@@ @ @ @ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @@@@ @@@ @@@@@ @ @ @ @@@ @@@@ @@@@@ @ @@@@@ @@@@ @@@ *
- X * *
- X * A compiler for distributed programming with C *
- X * *
- X * d e b u g . c *
- X * *
- X * Package : Configuration Files Parsers *
- X * Version : 1.0 *
- X * CreationDate : 26.02.92 *
- X * LastUpDate : 26.02.92 *
- X * *
- X * All routines needed to display additional informations for debugging *
- X * perpose only. *
- X * *
- X * Copyright (C) 1992-1994 by Christoph Pleier *
- X * All rights reserved! *
- X ***************************************************************************/
- X
- X/*
- X * This file is part of the Distributed C Development Environment (DCDE).
- X * DCDE is free software; you can redistribute it and/or modify
- X * it under the terms written in the README-file.
- X * DCDE is distributed in the hope that it will be useful,
- X * but WITHOUT ANY WARRANTY; without even the implied warranty of
- X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- X * See the file README for more details.
- X */
- X
- X#include <stdio.h>
- X#include "cfgparsers.h"
- X
- X#define DEBUG
- X
- X#ifdef DEBUG
- X
- X/******************************************************************************
- X * DisplaySymbtabel() *
- X * *
- X * Displays the components of the symbol table element pointed to by 'symbol'.*
- X * *
- X * Return values: none! *
- X ******************************************************************************/
- Xint
- XDisplaySymbtabel(symbol)
- XSYMBTABEL *symbol;
- X{
- X TARGETINFO *target;
- X SYMBTABEL *p_symb;
- X ACCFSINFO *afs;
- X IDENTLIST *idl;
- X FSSPECINFO *fsl;
- X COMMPINFO *csl;
- X PATTRINFO *pattrl;
- X PHOSTLIST *phost;
- X COSTINFO *costl;
- X
- X printf("name : \"%s\"\n", symbol->name);
- X printf("type : ");
- X switch(symbol->type) {
- X case UNDEFINED:
- X puts("UNDEFINED");
- X break;
- X case S_HOST:
- X puts("S_HOST");
- X printf("installed operating system : %s\n", symbol->info.Host.os->name);
- X printf(" computer type : %s\n", symbol->info.Host.type->name);
- X printf(" physical memory : %f MB\n", symbol->info.Host.phys_mem);
- X printf(" virtual memory : %f MB\n", symbol->info.Host.virt_mem);
- X printf(" performance index : %f\n", symbol->info.Host.perf_index);
- X if (symbol->info.Host.multiprocessor) {
- X printf(" multiprocessor : TRUE\n");
- X printf(" number of processors : %d\n", symbol->info.Host.processors);
- X printf(" memory type : %s memory\n",
- X (symbol->info.Host.memory_type == SHARED_MEMORY) ? "shared" : "distributed");
- X printf("has parallelizing compiler : %s\n", (symbol->info.Host.has_par_compiler) ? "TRUE" : "FALSE");
- X } else
- X printf(" multiprocessor : FALSE\n");
- X printf(" is vector computer : %s\n", (symbol->info.Host.is_vector_computer) ? "TRUE" : "FALSE");
- X
- X printf("peripheral devices:\n ");
- X for(idl = symbol->info.Host.p_devices; idl; idl = idl->next)
- X printf("%s ", idl->symbol->name);
- X puts("");
- X
- X printf("accessible filesystems:\n ");
- X for(afs = symbol->info.Host.f_systems; afs; afs = afs->next)
- X printf("%s (%f) ", afs->filesystem->name, afs->acc_time);
- X puts("");
- X
- X printf("compilation information:\n");
- X for(target = symbol->info.Host.compinfo; target; target = target->next){
- X printf(" target type : \"%s\"\n", target->type);
- X printf(" target os : \"%s\"\n", target->os);
- X printf(" cc : \"%s\"\n", target->cc);
- X printf(" cflags : \"%s\"\n", target->cflags);
- X printf(" ldflags : \"%s\"\n", target->ldflags);
- X printf(" libs : \"%s\"\n", target->libs);
- X }
- X
- X printf("cost informations:\n");
- X for(costl = symbol->info.Host.costinfo; costl; costl = costl->next)
- X printf(" -> %15s : %3.2f, %3.2f\n", costl->dest_host->name, costl->crea_val, costl->comm_val);
- X printf("internal informations:\n");
- X printf("prob_load : %f\n", symbol->info.Host.prob_load);
- X printf(" pcreated : %d\n", symbol->info.Host.pcreated);
- X break;
- X case S_COMPUTER_TYPE:
- X puts("S_COMPUTER_TYPE");
- X break;
- X case S_OPERATING_SYSTEM:
- X puts("S_OPERATING_SYSTEM");
- X break;
- X case S_FIXED_DISK:
- X puts("S_FIXED_DISK");
- X printf("disk located in host \"%s\"\n", symbol->info.disk.location->name);
- X printf("disk size = %f MB\n", symbol->info.disk.size);
- X printf("disk access time = %f ms\n", symbol->info.disk.speed);
- X break;
- X case S_PROCESS:
- X puts("S_PROCESS");
- X printf(" intensity index : %f\n", symbol->info.Process.intensity_index);
- X if (symbol->info.Process.pref_hosts) {
- X printf(" preferred hosts : ");
- X for(idl = symbol->info.Process.pref_hosts; idl; idl = idl->next)
- X printf("%s ", idl->symbol->name);
- X puts("");
- X }
- X if (symbol->info.Process.rest_hosts) {
- X printf(" restricted hosts : ");
- X for(idl = symbol->info.Process.rest_hosts; idl; idl = idl->next)
- X printf("%s ", idl->symbol->name);
- X puts("");
- X }
- X if (symbol->info.Process.peri_dev) {
- X printf("accesses peripheral devices :\n");
- X for(idl = symbol->info.Process.peri_dev; idl; idl = idl->next)
- X printf("%s ", idl->symbol->name);
- X puts("");
- X }
- X if (symbol->info.Process.filesystems) {
- X printf("accesses filesystems:\n");
- X for(fsl = symbol->info.Process.filesystems; fsl; fsl = fsl->next)
- X printf(" name: %s, freq: %f, quant: %f\n",
- X fsl->filesys->name, fsl->frequency, fsl->quantity);
- X }
- X if (symbol->info.Process.commps) {
- X printf("communicates with:\n");
- X for(csl = symbol->info.Process.commps; csl; csl = csl->next)
- X printf(" name: %s, freq: %f, quant: %f\n",
- X csl->Process->name, csl->frequency, csl->quantity);
- X }
- X for(pattrl = symbol->info.Process.others; pattrl; pattrl = pattrl->next) {
- X switch(pattrl->type) {
- X case PA_PHYS_MEM:
- X printf("%s physical memory: %f MB\n", (pattrl->mode == MODE_WISHES) ? "whishes" : "requires",
- X pattrl->info.phys_mem_size);
- X break;
- X case PA_VIRT_MEM:
- X printf("%s virtual memory: %f MB\n", (pattrl->mode == MODE_WISHES) ? "whishes" : "requires",
- X pattrl->info.virt_mem_size);
- X break;
- X case PA_VECTORIZATION:
- X printf("%s vectorization\n", (pattrl->mode == MODE_WISHES) ? "whishes" : "requires");
- X break;
- X case PA_PARALLELIZATION:
- X printf("%s parallelization\n", (pattrl->mode == MODE_WISHES) ? "whishes" : "requires");
- X break;
- X }
- X } /* for(pattrl) */
- X if (symbol->info.Process.phostlist) {
- X printf("priority hostlist:\n");
- X for(phost = symbol->info.Process.phostlist; phost; phost = phost->next)
- X printf(" host: %10s, pref: %d, w_val: %3d, load: %2.2f, overall: %2.2f\n",
- X phost->Host->name, phost->preferred, phost->wished_val,
- X phost->load, phost->overall_index);
- X }
- X default:
- X puts("unknown");
- X } /* switch */
- X} /* DisplaySymbtabel */
- X
- X/******************************************************************************
- X * DisplaySymbolTable() *
- X * *
- X * Displays the complete symbol table. *
- X * *
- X * Return values: none! *
- X ******************************************************************************/
- Xint
- XDisplaySymbolTable()
- X{
- X int i;
- X register SYMBTABEL *symbol;
- X
- X puts("Symbol table:");
- X puts("=============\n");
- X for(symbol = symbtab, i = 1; symbol; symbol = symbol->next, i++) {
- X printf("Entry %3d:\n", i);
- X printf("----------\n");
- X DisplaySymbtabel(symbol);
- X puts("");
- X }
- X} /* DisplaySymbolTable */
- X
- X#endif /* DEBUG /**/
- END_OF_FILE
- if test 9082 -ne `wc -c <'config/debug.c'`; then
- echo shar: \"'config/debug.c'\" unpacked with wrong size!
- fi
- # end of 'config/debug.c'
- fi
- if test -f 'config/system.y' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'config/system.y'\"
- else
- echo shar: Extracting \"'config/system.y'\" \(8845 characters\)
- sed "s/^X//" >'config/system.y' <<'END_OF_FILE'
- X/***************************************************************************
- X * *
- X * @@@@ @@@ @@@@@ @@@@@ @@@@@ @@@ @@@@ @ @ @@@@@ @@@@@ @@@@ @@@ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @ @ @ @@@@@ @ @@@@@ @ @@@@@ @ @ @ @@@@@ @ @ @ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @@@@ @@@ @@@@@ @ @ @ @@@ @@@@ @@@@@ @ @@@@@ @@@@ @@@ *
- X * *
- X * A compiler for distributed programming with C *
- X * *
- X * s y s t e m . y *
- X * *
- X * Package : Configuration Files Parsers *
- X * Version : 2.0 *
- X * CreationDate : 20.11.91 *
- X * LastUpDate : 20.12.93 *
- X * *
- X * The grammar specifying the syntax of the system configuration file. *
- X * *
- X * Copyright (C) 1991-1994 by Christoph Pleier *
- X * All rights reserved! *
- X ***************************************************************************/
- X
- X/*
- X * This file is part of the Distributed C Development Environment (DCDE).
- X * DCDE is free software; you can redistribute it and/or modify
- X * it under the terms written in the README-file.
- X * DCDE is distributed in the hope that it will be useful,
- X * but WITHOUT ANY WARRANTY; without even the implied warranty of
- X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- X * See the file README for more details.
- X */
- X
- X%{
- X#include <stdio.h>
- X#include <stdlib.h>
- X#include <sys/types.h>
- X#include "cfgparsers.h"
- X%}
- X
- X/* the type of the value stack */
- X%union {
- X char *y_str; /* a string */
- X SYMBTABEL *y_symb; /* a pointer to a symbol table element */
- X float y_float; /* a number */
- X MULTIINFO *y_multi;
- X OPTCOMPINFO *y_ocomp;
- X COMPSPEINFO *y_comsp;
- X TARGETINFO *y_target; /* a pointer to a target information */
- X ACCFSINFO *y_accfs;
- X IDENTLIST *y_idlist; /* a pointer to an identifier list */
- X}
- X
- X/* characters */
- X%token ',' ';' ':' '.' '+' '-' '*' '/' '%' '~' '!' '&' '|' '^'
- X%token '=' '<' '>' '{' '}' '[' ']' '(' ')' '\"' '\'' '\\' '@'
- X
- X/* special characters
- X * NOTE: The token definition must be defined exactly like in program.y
- X */
- X%token ACCESSES ACCESSIBLE COMMUNICATES COMPILATION COMPILER COMPUTER COSTS
- X%token CREATION DEVICES DISKS DISTRIBUTED EXECUTABLES FILESYSTEMS FIXED FOR
- X%token GENERAL HOST HOSTS HOSTNAMES INDEX INFORMATIONS INTENSITY LISTS LOCATION
- X%token MEMORY MULTIPROCESSOR OPERATING PARALLELIZING PERFORMANCE PERIPHERAL
- X%token PHYSICAL PREFERRED PRIORITY PROCESS PROCESSORS REQUIRES RESTRICTED
- X%token SHARED SIZE SPECIFICATION SPEED STORAGE SYSTEM TARGET TYPE TYPES
- X%token VARIANTS VECTOR VIRTUAL WISHES WITH
- X%token VECTORIZATION PARALLELIZATION
- X%token MS NS KB MB GB
- X%token CC CFLAGS LD LDFLAGS LIBS
- X%token IDENT STRING NUMBER
- X
- X%type <y_str> STRING
- X%type <y_symb> IDENT operating_system_definition
- X%type <y_float> NUMBER size_specification time_specification
- X%type <y_float> optional_disk_size_definition optional_disk_speed_definition
- X%type <y_multi> multiprocessor_specification
- X%type <y_ocomp> optional_computer_attribute_list optional_computer_attribute
- X%type <y_comsp> computer_specification
- X%type <y_target> target_specification target_list compilation_specification
- X%type <y_accfs> filesystem_definition filesystems_list
- X%type <y_accfs> accessible_filesystems_definition
- X%type <y_idlist> ident_list peripheral_devices_definition
- X
- X%start system_configuration
- X
- X%%
- X
- Xsystem_configuration:
- X declaration_list
- X ;
- X
- Xdeclaration_list:
- X declaration
- X | declaration_list declaration
- X ;
- X
- Xdeclaration:
- X hostnames_definition
- X | computer_types_definition
- X | operating_system_variants_definition
- X | fixed_disks_definition
- X | host_specification
- X | compilation_hosts_definition
- X | costs_definition
- X ;
- X
- Xhostnames_definition:
- X HOSTNAMES '=' '{' ident_list '}'
- X {mark_symbols($4, S_HOST);}
- X ;
- X
- Xcomputer_types_definition:
- X COMPUTER TYPES '=' '{' ident_list '}'
- X {mark_symbols($5, S_COMPUTER_TYPE);}
- X ;
- X
- Xoperating_system_variants_definition:
- X OPERATING SYSTEM VARIANTS '=' '{' ident_list '}'
- X {mark_symbols($6, S_OPERATING_SYSTEM);}
- X ;
- X
- Xfixed_disks_definition:
- X FIXED DISKS '=' '{' disk_definition_list '}'
- X ;
- X
- Xdisk_definition_list:
- X disk_definition
- X | disk_definition_list disk_definition
- X ;
- X
- Xdisk_definition:
- X IDENT '=' '{'
- X LOCATION ':' IDENT
- X optional_disk_size_definition
- X optional_disk_speed_definition
- X '}'
- X {enter_disk_definition($1, $6, $7, $8);}
- X ;
- X
- Xoptional_disk_size_definition:
- X /* empty */
- X {$$ = 0.0;}
- X | SIZE ':' size_specification
- X {$$ = $3;}
- X ;
- X
- Xoptional_disk_speed_definition:
- X /* empty */
- X {$$ = 0.0;}
- X | SPEED ':' time_specification
- X {$$ = $3;}
- X ;
- X
- Xhost_specification:
- X HOST ident_list '=' '{'
- X operating_system_definition
- X computer_specification
- X peripheral_devices_definition
- X compilation_specification
- X accessible_filesystems_definition
- X '}'
- X {enter_host_specification($2, $5, $6, $7, $8, $9);}
- X ;
- X
- Xoperating_system_definition:
- X OPERATING SYSTEM ':' IDENT
- X {$$ = $4;}
- X ;
- X
- Xcomputer_specification:
- X COMPUTER SPECIFICATION '{'
- X TYPE ':' IDENT
- X PHYSICAL MEMORY ':' size_specification
- X VIRTUAL MEMORY ':' size_specification
- X PERFORMANCE INDEX ':' NUMBER
- X STORAGE FOR EXECUTABLES ':' IDENT
- X '}'
- X {$$ = generate_comp_spec_info($6, $10, $14, $18, NULL, $23);}
- X | COMPUTER SPECIFICATION '{'
- X TYPE ':' IDENT
- X PHYSICAL MEMORY ':' size_specification
- X VIRTUAL MEMORY ':' size_specification
- X PERFORMANCE INDEX ':' NUMBER
- X optional_computer_attribute_list
- X STORAGE FOR EXECUTABLES ':' IDENT
- X '}'
- X {$$ = generate_comp_spec_info($6, $10, $14, $18, $19, $24);}
- X ;
- X
- Xoptional_computer_attribute_list:
- X optional_computer_attribute
- X | optional_computer_attribute_list optional_computer_attribute
- X {$$ = add_opt_comp_attr_info($1, $2);}
- X ;
- X
- Xoptional_computer_attribute:
- X multiprocessor_specification
- X {$$ = generate_opt_comp_attr_info($1, 0);}
- X | VECTOR COMPUTER
- X {$$ = generate_opt_comp_attr_info(NULL, VECTOR_COMPUTER);}
- X | PARALLELIZING COMPILER
- X {$$ = generate_opt_comp_attr_info(NULL, PAR_COMPILER);}
- X ;
- X
- Xmultiprocessor_specification:
- X MULTIPROCESSOR SYSTEM ':' NUMBER PROCESSORS ',' SHARED MEMORY
- X {$$ = generate_multi_info($4, SHARED_MEMORY);}
- X | MULTIPROCESSOR SYSTEM ':' NUMBER PROCESSORS ',' DISTRIBUTED MEMORY
- X {$$ = generate_multi_info($4, DISTRIBUTED_MEMORY);}
- X ;
- X
- Xperipheral_devices_definition:
- X /* empty */
- X {$$ = NULL;}
- X | PERIPHERAL DEVICES '=' '{' ident_list '}'
- X {$$ = $5;}
- X ;
- X
- Xcompilation_specification:
- X COMPILATION '{' target_list '}'
- X {$$ = $3;}
- X ;
- X
- Xtarget_list:
- X target_specification
- X | target_list target_specification
- X {$$ = chain_targetinfos($1, $2);}
- X ;
- X
- Xtarget_specification:
- X TARGET ':' IDENT '(' IDENT ')' '{'
- X CC '=' STRING
- X CFLAGS '=' STRING
- X LDFLAGS '=' STRING
- X LIBS '=' STRING
- X '}'
- X {$$ = generate_targetinfo($3, $5, $10, $13, $16, $19);}
- X ;
- X
- Xaccessible_filesystems_definition:
- X /* empty */
- X {$$ = NULL;}
- X | ACCESSIBLE FILESYSTEMS '=' '{' filesystems_list '}'
- X {$$ = $5;}
- X ;
- X
- Xfilesystems_list:
- X filesystem_definition
- X | filesystems_list ',' filesystem_definition
- X {$$ = chain_accfs_infos($1, $3);}
- X ;
- X
- Xfilesystem_definition:
- X IDENT '(' time_specification ')'
- X {$$ = generate_accfs_info($1, $3);}
- X ;
- X
- Xcompilation_hosts_definition:
- X COMPILATION HOSTS PRIORITY LISTS '{'
- X compilation_hosts_priority_list
- X '}'
- X ;
- X
- Xcompilation_hosts_priority_list:
- X /* empty */
- X | compilation_hosts_specification_list
- X | GENERAL ':' ident_list
- X ;
- X
- Xcompilation_hosts_specification_list:
- X IDENT ':' ident_list
- X | compilation_hosts_specification_list IDENT ':' ident_list
- X ;
- X
- Xcosts_definition:
- X COSTS INFORMATIONS '{' costs_definition_list '}'
- X ;
- X
- Xcosts_definition_list:
- X cost_definition
- X | costs_definition_list cost_definition
- X ;
- X
- Xcost_definition:
- X IDENT '-' '>' IDENT ':' NUMBER ',' NUMBER
- X {enter_cost_definition($1, $4, $6, $8);}
- X ;
- X
- Xident_list:
- X IDENT
- X {$$ = store_ident_in_list($1);}
- X | ident_list ',' IDENT
- X {$$ = chain_ident_lists($1, store_ident_in_list($3));}
- X ;
- X
- Xsize_specification:
- X NUMBER MB
- X | NUMBER GB
- X {$$ = $1 * 1024;}
- X ;
- X
- Xtime_specification:
- X NUMBER MS
- X ;
- X
- X%%
- END_OF_FILE
- if test 8845 -ne `wc -c <'config/system.y'`; then
- echo shar: \"'config/system.y'\" unpacked with wrong size!
- fi
- # end of 'config/system.y'
- fi
- if test -f 'dcadmin/Status.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'dcadmin/Status.c'\"
- else
- echo shar: Extracting \"'dcadmin/Status.c'\" \(7800 characters\)
- sed "s/^X//" >'dcadmin/Status.c' <<'END_OF_FILE'
- X/***************************************************************************
- X * *
- X * @@@@ @@@ @@@@@ @@@@@ @@@@@ @@@ @@@@ @ @ @@@@@ @@@@@ @@@@ @@@ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @ @ @ @@@@@ @ @@@@@ @ @@@@@ @ @ @ @@@@@ @ @ @ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @@@@ @@@ @@@@@ @ @ @ @@@ @@@@ @@@@@ @ @@@@@ @@@@ @@@ *
- X * *
- X * A compiler for distributed programming with C *
- X * *
- X * S t a t u s . c *
- X * *
- X * Package : Administration Process *
- X * Version : 1.0 *
- X * CreationDate : 16.09.90 *
- X * LastUpDate : 06.12.93 *
- X * *
- X * All routines needed for storing new process states and for displaying *
- X * them. *
- X * *
- X * Copyright (C) 1990-1994 by Christoph Pleier *
- X * All rights reserved! *
- X ***************************************************************************/
- X
- X/*
- X * This file is part of the Distributed C Development Environment (DCDE).
- X * DCDE is free software; you can redistribute it and/or modify
- X * it under the terms written in the README-file.
- X * DCDE is distributed in the hope that it will be useful,
- X * but WITHOUT ANY WARRANTY; without even the implied warranty of
- X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- X * See the file README for more details.
- X */
- X
- X#include <stdio.h>
- X#include <sys/types.h>
- X#ifdef HETEROGENEOUS
- X# include <rpc/rpc.h>
- X#endif
- X#include <signal.h>
- X#include <time.h>
- X#ifndef UNICOS
- X# include <sys/timeb.h>
- X#endif
- X#include <errno.h>
- X#ifdef BSD
- X# include <sys/wait.h>
- X#endif /* BSD /**/
- X#include "ipc.h"
- X#include "dcc.h"
- X#include "timeout.h"
- X#include "dcadmin.h"
- X
- X#define EXIT(v) fprintf(stderr, "dcadmin: Terminating!\n"); \
- X exit(v)
- X
- X/******************************************************************************
- X * ChangeProcessStatus() *
- X * *
- X * Change the state of a process to 'accept or terminate' or 'running'. *
- X * *
- X * Return values: OK upon success / ERROR upon error *
- X ******************************************************************************/
- Xint
- XChangeProcessStatus(state)
- Xint state;
- X{
- X PROCESSDATA p_data;
- X register struct pdat_list *aptr;
- X
- X /* Receive the process information of the process */
- X if (_receive_process_data(&p_data)) {
- X error("dcadmin: receiving process data");
- X EXIT(ERROR);
- X }
- X /* Search entry in list and change the state if there is one.
- X * Otherwise return an error.
- X */
- X for(aptr = pdat_first; aptr; aptr = aptr->next) {
- X if (!strcmp(aptr->p_descr.processname, p_data.processname)
- X#ifdef iPSC
- X && aptr->p_descr.port.node == p_data.port.node
- X && aptr->p_descr.port.pid == p_data.port.pid) {
- X#else
- X# ifdef SINGLE
- X && aptr->p_descr.pid == p_data.pid) {
- X# else /* HOMOGENEOUS || HETEROGENEOUS */
- X && !strcmp(aptr->p_descr.port.hostname, p_data.port.hostname)
- X && aptr->p_descr.port.portnum == p_data.port.portnum) {
- X# endif /* SINGLE /**/
- X#endif /* iPSC /**/
- X aptr->status = (state == NOTIFY_ACCORTER_ON) ? ACCORTER : RUNNING;
- X#ifdef ADMINDEBUG
- X fprintf(dfile, "[dbg] %s state of process %s with pid %d modified to %s\n",
- X _processprefix, aptr->p_descr.processname, aptr->p_descr.pid,
- X (state == NOTIFY_ACCORTER_ON) ? "accept or terminate" :
- X "running");
- X if (_debugflush)
- X fflush(dfile);
- X#endif /* ADMINDEBUG /**/
- X if (state == NOTIFY_ACCORTER_ON)
- X CheckAcceptOrTerminate();
- X return(OK);
- X }
- X } /* for */
- X error("Process to change state not found in process data list");
- X return(ERROR);
- X} /* ChangeProcessStatus */
- X
- X/******************************************************************************
- X * DisplayStatus() *
- X * *
- X * Displays the status of all processes of the 'process data list'. *
- X * *
- X * Return values: OK upon success / ERROR upon error *
- X ******************************************************************************/
- Xint
- XDisplayStatus()
- X{
- X register struct pdat_list *ptr;
- X
- X#ifdef DO_NOT_COMPILE
- X switch(fork()) {
- X case -1:
- X error("dcadmin: fork()");
- X EXIT(ERROR);
- X /* break; */
- X case 0:
- X /* child! */
- X printf("\n%-20s |", "PROCESSNAME");
- X#ifdef iPSC
- X printf(" %-15s |", "NODE");
- X#else
- X# ifndef SINGLE
- X printf(" %-20s |", "HOST");
- X# endif /* !SINGLE /**/
- X#endif /* iPSC /**/
- X printf(" %-10s | %-15s\n", "PID", "STATUS");
- X for(ptr = pdat_first; ptr; ptr = ptr->next) {
- X printf("%-20s |", ptr->p_descr.processname);
- X#ifdef iPSC
- X printf(" %-15ld |", ptr->p_descr.port.node);
- X#else
- X# ifndef SINGLE
- X printf(" %-20s |", ptr->p_descr.port.hostname);
- X# endif /* !SINGLE /**/
- X#endif /* iPSC /**/
- X printf(" %-10d | ", ptr->p_descr.pid);
- X switch(ptr->status) {
- X case RUNNING:
- X printf("%-15s\n", "running");
- X break;
- X case ACCORTER:
- X printf("%-15s\n", "accept or terminate");
- X break;
- X default:
- X printf("%-15s\n", "UNKNOWN");
- X break;
- X } /* switch */
- X } /* for */
- X exit(OK);
- X break;
- X default:
- X /* parent! */
- X Intr = 1;
- X signal(SIGTERM, DisplayStatus);
- X } /* switch */
- X#endif
- X return(OK);
- X} /* DisplayStatus */
- X
- X/******************************************************************************
- X * GetChildStatus() *
- X * *
- X * Get status of terminating children to avoid zombies! *
- X * *
- X * Return values: none *
- X ******************************************************************************/
- Xint
- XGetChildStatus()
- X{
- X int pid,
- X status;
- X struct pid_list *pptr,
- X *lptr;
- X#ifdef SYSTEM_V
- X pid = wait(&status);
- X#else /* BSD */
- X union wait wstatus;
- X
- X pid = wait3(&wstatus, WNOHANG, NULL);
- X status = wstatus.w_status;
- X#endif /* SYSTEM_V /**/
- X#ifdef DO_NOT_COMPILE
- X if (status == 0xB1) {
- X fputs(": process was stopped!\n", pfile);
- X } else {
- X if (!(status & 0xFF))
- X fprintf(pfile, " by exit call. Exit code = %d\n",
- X (status & 0xFF00) >> 8);
- X else
- X fprintf(pfile, " by signal %d\n", status);
- X }
- X fflush(pfile);
- X }
- X#endif
- X /* set signal again */
- X /* signal(SIGCLD, GetChildStatus); */
- X Intr = 1;
- X} /* GetChildStatus */
- X
- END_OF_FILE
- if test 7800 -ne `wc -c <'dcadmin/Status.c'`; then
- echo shar: \"'dcadmin/Status.c'\" unpacked with wrong size!
- fi
- # end of 'dcadmin/Status.c'
- fi
- if test -f 'dcinstall/Compile.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'dcinstall/Compile.c'\"
- else
- echo shar: Extracting \"'dcinstall/Compile.c'\" \(8377 characters\)
- sed "s/^X//" >'dcinstall/Compile.c' <<'END_OF_FILE'
- X/***************************************************************************
- X * *
- X * @@@@ @@@ @@@@@ @@@@@ @@@@@ @@@ @@@@ @ @ @@@@@ @@@@@ @@@@ @@@ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @ @ @ @@@@@ @ @@@@@ @ @@@@@ @ @ @ @@@@@ @ @ @ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @@@@ @@@ @@@@@ @ @ @ @@@ @@@@ @@@@@ @ @@@@@ @@@@ @@@ *
- X * *
- X * A compiler for distributed programming with C *
- X * *
- X * C o m p i l e . c *
- X * *
- X * Package : Installer Program *
- X * Version : 1.0 *
- X * CreationDate : 20.11.91 *
- X * LastUpDate : 03.12.93 *
- X * *
- X * The routine 'CompileFiles' which performs the complete compilation, *
- X * linking and loading of programs. *
- X * *
- X * Copyright (C) 1991-1994 by Christoph Pleier *
- X * All rights reserved! *
- X ***************************************************************************/
- X
- X/*
- X * This file is part of the Distributed C Development Environment (DCDE).
- X * DCDE is free software; you can redistribute it and/or modify
- X * it under the terms written in the README-file.
- X * DCDE is distributed in the hope that it will be useful,
- X * but WITHOUT ANY WARRANTY; without even the implied warranty of
- X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- X * See the file README for more details.
- X */
- X
- X#include <stdio.h>
- X#include <pwd.h>
- X#include "cfgparsers.h"
- X#include "dcinstall.h"
- X
- X/******************************************************************************
- X * CompileFiles() *
- X * *
- X * Compiles, links and loads the files from the local host 'src' specified as *
- X * command line arguments on the destination host 'dest'. *
- X * NOTE: For local compilation 'src' equals 'dest'. *
- X * *
- X * Return values: OK upon success / ERROR upon error *
- X ******************************************************************************/
- Xint
- XCompileFiles(src, dest)
- XSYMBTABEL *src; /* source host */
- XSYMBTABEL *dest; /* destination host */
- X{
- X int mounted; /* src and dest share one filesystem or not */
- X static char cmd[1000]; /* to store the command */
- X FILENAMELIST *fptr; /* pointer for file list (xxx.c) */
- X OPTIONLIST *optr; /* pointer for option list */
- X SYMBTABEL *symbol; /* loop pointer for symbol table elements */
- X SYMBTABEL *symbol2; /* loop pointer for symbol table elements */
- X SYMBTABEL *class; /* destination compilation class */
- X TARGETINFO *targets; /* all targets the local system can build */
- X
- X if (!c_flag && !o_flag)
- X return(OK);
- X
- X#ifndef DEBUG
- X printf(" Compiling files on %s (%s)\n",
- X dest->name, dest->info.Host.ex_storage->name);
- X#endif /* Not DEBUG /**/
- X
- X /* Determine access mode:
- X * If source-host equals destination host or source and dest host
- X * share one disk the access mode is mounted. Otherwise if dest is
- X * accessed via network, it is not mounted!
- X */
- X if (src == dest || src->info.Host.ex_storage->info.disk.location == dest->info.Host.ex_storage->info.disk.location)
- X mounted = TRUE;
- X else
- X mounted = FALSE;
- X
- X if (mounted)
- X sprintf(cmd, "cd %s/dcc/compile ;", gethomedir(getLogin()));
- X else
- X sprintf(cmd, "%s %s cd dcc/compile \";\"", RSH, dest->name);
- X
- X for(targets = dest->info.Host.compinfo; targets; targets = targets->next)
- X if (!strcmp(targets->type, dest->info.Host.type->name)
- X && !strcmp(targets->os, dest->info.Host.os->name))
- X break;
- X
- X if (!targets) {
- X fprintf(stderr, "Error: target specification for computer type \"%s\" of operating",
- X dest->info.Host.type->name);
- X fprintf(stderr, " system \"%s\" of host \"%s\" not found \n",
- X dest->info.Host.os->name, dest->name);
- X fprintf(stderr, " in system configuration file \"%s\"\n",
- X cfgfilename);
- X exit(ERROR);
- X }
- X
- X strcat(cmd, " ");
- X strcat(cmd, targets->cc);
- X strcat(cmd, " -I. -I../include ");
- X strcat(cmd, targets->cflags);
- X strcat(cmd, " ");
- X
- X if (o_flag) {
- X strcat(cmd, "-o ");
- X strcat(cmd, targetname);
- X strcat(cmd, " ");
- X }
- X
- X if (c_flag) {
- X strcat(cmd, "-c ");
- X strcat(cmd, " ");
- X }
- X
- X for(fptr = first_file; fptr; fptr = fptr->next) {
- X strcat(cmd, fptr->name);
- X strcat(cmd, " ");
- X }
- X
- X for(optr = first_opt; optr; optr = optr->next) {
- X strcat(cmd, optr->option);
- X strcat(cmd, " ");
- X }
- X
- X if (o_flag) {
- X strcat(cmd, " ../lib/");
- X strcat(cmd, dest->info.Host.type->name);
- X strcat(cmd, "/dcc.a ");
- X }
- X
- X strcat(cmd, targets->libs);
- X
- X if (o_flag) {
- X if (mounted)
- X strcat(cmd, " ; mv ");
- X else
- X strcat(cmd, " \";\" mv ");
- X strcat(cmd, targetname);
- X strcat(cmd, " ");
- X strcat(cmd, "../bin/");
- X strcat(cmd, dest->info.Host.type->name);
- X strcat(cmd, "/");
- X strcat(cmd, targetname);
- X }
- X
- X if (verbose)
- X printf(" Compilation command: %s\n", cmd);
- X
- X if (!noexecute)
- X if (system(cmd)) {
- X fprintf(stderr, "\nError compiling the files for host \"%s\"\n",
- X dest->name);
- X fprintf(stderr, "The following command caused the error:\n");
- X fprintf(stderr, "\"%s\"\n", cmd);
- X exit(ERROR);
- X }
- X
- X dest->info.Host.wasmade = TRUE;
- X
- X /* check the remainding hosts */
- X for(symbol = symbtab; symbol; symbol = symbol->next) {
- X
- X if (symbol->type == S_HOST
- X && symbol->info.Host.type == dest->info.Host.type
- X && symbol->info.Host.os == dest->info.Host.os) {
- X
- X if (!symbol->info.Host.istarget || symbol->info.Host.wasmade)
- X continue;
- X
- X if (symbol->info.Host.ex_storage == dest->info.Host.ex_storage) {
- X /* Host shares files with compilation host => nothing to do! */
- X symbol->info.Host.wasmade = TRUE;
- X } else {
- X /* Host has own filesystem => distribute generated executables
- X */
- X if (o_flag) {
- X#ifndef DEBUG
- X printf(" Distributing files %s (%s) -> %s (%s)\n",
- X dest->name, dest->info.Host.ex_storage->info.disk.location->name,
- X symbol->name, symbol->info.Host.ex_storage->info.disk.location->name);
- X#endif /* Not DEBUG /**/
- X sprintf(cmd, "rcp %s/dcc/bin/%s/%s %s@%s:dcc/bin/%s/%s",
- X gethomedir(getLogin()), dest->info.Host.type->name,
- X targetname, getLogin(), symbol->name,
- X dest->info.Host.type->name, targetname);
- X if (verbose)
- X printf("Distribution command: %s\n", cmd);
- X if (!noexecute)
- X if (system(cmd)) {
- X fprintf(stderr, "\nError distributing the files to host \"%s\"\n",
- X symbol->name);
- X fprintf(stderr, "The following command caused the error:\n");
- X fprintf(stderr, "\"%s\"\n", cmd);
- X exit(ERROR);
- X }
- X }
- X /* all hosts of this filesystem and the same class are also
- X * marked
- X */
- X for(symbol2 = symbtab; symbol2; symbol2 = symbol2->next) {
- X if (symbol2->type == S_HOST
- X && symbol2->info.Host.type == symbol->info.Host.type
- X && symbol2->info.Host.os == symbol->info.Host.os
- X && symbol2->info.Host.ex_storage == symbol->info.Host.ex_storage) {
- X symbol2->info.Host.wasmade = TRUE;
- X }
- X } /* for */
- X }
- X }
- X
- X } /* for(symbol) */
- X
- X return(OK);
- X
- X} /* CompileFiles */
- END_OF_FILE
- if test 8377 -ne `wc -c <'dcinstall/Compile.c'`; then
- echo shar: \"'dcinstall/Compile.c'\" unpacked with wrong size!
- fi
- # end of 'dcinstall/Compile.c'
- fi
- if test -f 'dcinstall/ParseOptions.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'dcinstall/ParseOptions.c'\"
- else
- echo shar: Extracting \"'dcinstall/ParseOptions.c'\" \(8792 characters\)
- sed "s/^X//" >'dcinstall/ParseOptions.c' <<'END_OF_FILE'
- X/***************************************************************************
- X * *
- X * @@@@ @@@ @@@@@ @@@@@ @@@@@ @@@ @@@@ @ @ @@@@@ @@@@@ @@@@ @@@ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @ @ @ @@@@@ @ @@@@@ @ @@@@@ @ @ @ @@@@@ @ @ @ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @@@@ @@@ @@@@@ @ @ @ @@@ @@@@ @@@@@ @ @@@@@ @@@@ @@@ *
- X * *
- X * A compiler for distributed programming with C *
- X * *
- X * P a r s e O p t i o n s . c *
- X * *
- X * Package : Installer Program *
- X * Version : 1.1 *
- X * CreationDate : 20.11.91 *
- X * LastUpDate : 25.02.92 *
- X * *
- X * Parses and interprets the command line options. *
- X * *
- X * Copyright (C) 1991-1994 by Christoph Pleier *
- X * All rights reserved! *
- X ***************************************************************************/
- X
- X/*
- X * This file is part of the Distributed C Development Environment (DCDE).
- X * DCDE is free software; you can redistribute it and/or modify
- X * it under the terms written in the README-file.
- X * DCDE is distributed in the hope that it will be useful,
- X * but WITHOUT ANY WARRANTY; without even the implied warranty of
- X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- X * See the file README for more details.
- X */
- X
- X#include <stdio.h>
- X#include <string.h>
- X#include <sys/types.h>
- X#include "cfgparsers.h"
- X#include "dcinstall.h"
- X
- X/******************************************************************************
- X * ParseOptions() *
- X * *
- X * Parses and interprets the command line options. *
- X * *
- X * Return values: OK upon success / ERROR upon error *
- X ******************************************************************************/
- Xint
- XParseOptions(argc, argv)
- Xint argc;
- Xchar *argv[];
- X{
- X int i;
- X int length;
- X char *suffix;
- X char localhostname[MAXHOSTNAMELEN];
- X char input[80];
- X FILENAMELIST *fptr;
- X OPTIONLIST *optr;
- X SYMBTABEL *symbol;
- X
- X for(i = 1; i < argc; i++) {
- X
- X if (!strcmp(argv[i], "-f")) {
- X /* this option was already managed! */
- X ++i;
- X continue;
- X }
- X
- X if (!strcmp(argv[i], "-c")) {
- X /* Option: "-c" */
- X if (o_flag) {
- X fputs("Error: Option '-o' and '-c' combined\n", stderr);
- X exit(ERROR);
- X }
- X c_flag = TRUE;
- X#ifdef DEBUG
- X printf("Option recognized: \"-c\"\n");
- X#endif /* DEBUG /**/
- X continue;
- X }
- X
- X if (!strcmp(argv[i], "-o")) {
- X /* Option: "-o" */
- X if (c_flag) {
- X fputs("Error: Option '-c' and '-o' combined\n", stderr);
- X exit(ERROR);
- X }
- X o_flag = TRUE;
- X targetname = argv[++i];
- X#ifdef DEBUG
- X printf("Option recognized: \"-o %s\"\n", targetname);
- X#endif /* DEBUG /**/
- X continue;
- X }
- X
- X if (!strcmp(argv[i], "-target")) {
- X if (!strcmp(argv[++i], "all")) {
- X /* Option: "-target all" */
- X alltargets = TRUE;
- X#ifdef DEBUG
- X printf("Option recognized: \"-target all\"\n");
- X#endif /* DEBUG /**/
- X for(symbol = symbtab; symbol; symbol = symbol->next) {
- X if (symbol->type == S_HOST)
- X symbol->info.Host.istarget = TRUE;
- X }
- X continue;
- X } else {
- X /* Option: "-target local" or "-target hostname" */
- X if (!strcmp(argv[i], "local")) {
- X localtarget = TRUE;
- X if (gethostname(localhostname, MAXHOSTNAMELEN)) {
- X fputs("Error: can't determine name of local host\n", stderr);
- X exit(ERROR);
- X }
- X symbol = lookup_symbtabel(localhostname);
- X } else {
- X symbol = lookup_symbtabel(argv[i]);
- X }
- X if (symbol == NULL) {
- X fprintf(stderr, "Error: target system for hostname \"%s\" is not defined in\n",
- X (localtarget) ? localhostname : argv[i]);
- X fprintf(stderr, " system configuration file \"%s\"\n",
- X cfgfilename);
- X exit(ERROR);
- X }
- X if (symbol->type != S_HOST) {
- X fprintf(stderr, "Error: target system for hostname \"%s\" is not defined as\n",
- X argv[i]);
- X fprintf(stderr, " hostname in system configuration file \"%s\"\n",
- X cfgfilename);
- X exit(ERROR);
- X }
- X symbol->info.Host.istarget = TRUE;
- X }
- X#ifdef DEBUG
- X printf("Option recognized: \"-target %s\"\n", argv[i]);
- X#endif /* DEBUG /**/
- X continue;
- X }
- X
- X if (!strcmp(argv[i], "-prepare")) {
- X /* Option: "-prepare" */
- X prepare = TRUE;
- X#ifdef DEBUG
- X printf("Option recognized: \"-prepare\"\n");
- X#endif /* DEBUG /**/
- X if (!noexecute) {
- X puts("WARNING: The option \"-prepare\" causes the destruction of all data");
- X puts(" in the directory \"dcc\" including all subdirectories at");
- X puts(" all specified hosts!");
- X printf("Do you really want to continue? (y/n) ");
- X scanf("%s", input);
- X if (input[0] != 'y' && input[0] != 'Y')
- X exit(OK);
- X }
- X continue;
- X }
- X
- X if (!strcmp(argv[i], "-clean")) {
- X /* Option: "-clean" */
- X clean = TRUE;
- X#ifdef DEBUG
- X printf("Option recognized: \"-clean\"\n");
- X#endif /* DEBUG /**/
- X continue;
- X }
- X
- X if (!strcmp(argv[i], "-crosscompile")) {
- X /* Option: "-crosscompile" */
- X crosscompile = TRUE;
- X#ifdef DEBUG
- X printf("Option recognized: \"-crosscompile\"\n");
- X#endif /* DEBUG /**/
- X fputs("Error: Option 'crosscompile' not yet implemented\n", stderr);
- X fputs("This will be done in a future release.\n", stderr);
- X exit(ERROR);
- X continue;
- X }
- X
- X if (!strcmp(argv[i], "-checktargets")) {
- X /* Option: "-checktargets" */
- X checktargets = TRUE;
- X#ifdef DEBUG
- X printf("Option recognized: \"-checktargets\"\n");
- X#endif /* DEBUG /**/
- X fputs("Error: Option 'checktargets' not yet implemented\n", stderr);
- X fputs("This will be done in a future release.\n", stderr);
- X exit(ERROR);
- X continue;
- X }
- X
- X if (!strcmp(argv[i], "-verbose")) {
- X /* Option: "-verbose" */
- X verbose = TRUE;
- X#ifdef DEBUG
- X printf("Option recognized: \"-verbose\"\n");
- X#endif /* DEBUG /**/
- X continue;
- X }
- X
- X if (!strcmp(argv[i], "-noexecute")) {
- X /* Option: "-noexecute" */
- X noexecute = TRUE;
- X#ifdef DEBUG
- X printf("Option recognized: \"-noexecute\"\n");
- X#endif /* DEBUG /**/
- X continue;
- X }
- X
- X#ifdef YYDEBUG
- X if (!strcmp(argv[i], "-yydebug")) {
- X /* Option: "-yydebug" */
- X# ifdef DEBUG
- X printf("Option recognized: \"-yydebug\"\n");
- X# endif /* DEBUG /**/
- X yydebug = 1;
- X continue;
- X }
- X#endif /* YYDEBUG /**/
- X
- X length = strlen(argv[i]);
- X suffix = argv[i] + length - 2;
- X
- X if (!strncmp(suffix, ".c", 2)) {
- X /* Option: "<name>.c" */
- X#ifdef DEBUG
- X printf("Option recognized: filename \"%s\"\n", argv[i]);
- X#endif /* DEBUG /**/
- X /* store filename in filename list */
- X fptr = (FILENAMELIST *) Malloc(sizeof(FILENAMELIST));
- X fptr->name = argv[i];
- X fptr->next = NULL;
- X if (first_file == NULL)
- X first_file = last_file = fptr;
- X else {
- X last_file->next = fptr;
- X last_file = fptr;
- X }
- X continue;
- X }
- X
- X if (!strncmp(suffix, ".h", 2)) {
- X /* Option: "<name>.h" */
- X#ifdef DEBUG
- X printf("Option recognized: include filename \"%s\"\n", argv[i]);
- X#endif /* DEBUG /**/
- X /* store include filename in include filename list */
- X fptr = (FILENAMELIST *) Malloc(sizeof(FILENAMELIST));
- X fptr->name = argv[i];
- X fptr->next = NULL;
- X if (first_incl_file == NULL)
- X first_incl_file = last_incl_file = fptr;
- X else {
- X last_incl_file->next = fptr;
- X last_incl_file = fptr;
- X }
- X continue;
- X }
- X
- X#ifdef DEBUG
- X printf("Storing unknown Option: \"%s\"\n", argv[i]);
- X#endif /* DEBUG /**/
- X /* store option in option list */
- X optr = (OPTIONLIST *) Malloc(sizeof(OPTIONLIST));
- X optr->option = argv[i];
- X optr->next = NULL;
- X if (first_opt == NULL)
- X first_opt = last_opt = optr;
- X else {
- X last_opt->next = optr;
- X last_opt = optr;
- X }
- X
- X } /* for(i) */
- X
- X return(OK);
- X} /* ParseOptions */
- END_OF_FILE
- if test 8792 -ne `wc -c <'dcinstall/ParseOptions.c'`; then
- echo shar: \"'dcinstall/ParseOptions.c'\" unpacked with wrong size!
- fi
- # end of 'dcinstall/ParseOptions.c'
- fi
- if test -f 'dcinstall/main.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'dcinstall/main.c'\"
- else
- echo shar: Extracting \"'dcinstall/main.c'\" \(7420 characters\)
- sed "s/^X//" >'dcinstall/main.c' <<'END_OF_FILE'
- X/***************************************************************************
- X * *
- X * @@@@ @@@ @@@@@ @@@@@ @@@@@ @@@ @@@@ @ @ @@@@@ @@@@@ @@@@ @@@ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @ @ @ @@@@@ @ @@@@@ @ @@@@@ @ @ @ @@@@@ @ @ @ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @@@@ @@@ @@@@@ @ @ @ @@@ @@@@ @@@@@ @ @@@@@ @@@@ @@@ *
- X * *
- X * A compiler for distributed programming with C *
- X * *
- X * m a i n . c *
- X * *
- X * Package : Installer Program *
- X * Version : 1.1 *
- X * CreationDate : 20.11.91 *
- X * LastUpDate : 25.02.92 *
- X * *
- X * The routine 'main' and the global variables. *
- X * *
- X * Copyright (C) 1991-1994 by Christoph Pleier *
- X * All rights reserved! *
- X ***************************************************************************/
- X
- X/*
- X * This file is part of the Distributed C Development Environment (DCDE).
- X * DCDE is free software; you can redistribute it and/or modify
- X * it under the terms written in the README-file.
- X * DCDE is distributed in the hope that it will be useful,
- X * but WITHOUT ANY WARRANTY; without even the implied warranty of
- X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- X * See the file README for more details.
- X */
- X
- X#include <stdio.h>
- X#include "cfgparsers.h"
- X#include "dcinstall.h"
- X#include "version.h"
- X
- X/*
- X * global variables
- X */
- X
- Xint alltargets; /* perform actions for all targets */
- Xint checkfile; /* check configuration file only or not */
- Xint checktargets; /* check targets or not */
- Xint c_flag; /* option '-c' or not */
- Xint clean; /* clean targets' remote compilation dirs */
- Xint crosscompile; /* use cross compilation if possible or not */
- Xint localtarget; /* perform actions for local host only */
- Xint noexecute; /* execute commands or not */
- Xint o_flag; /* option '-o' or not */
- Xint prepare; /* install runtime library or not */
- Xint verbose; /* print commands or not */
- Xchar cfgfilename[MAXPATHNAMELEN]; /* name of configuration file */
- Xchar *targetname; /* name of compilation target */
- XFILENAMELIST *first_file; /* pointer to beginning of file list (xxx.c) */
- XFILENAMELIST *last_file; /* pointer to end of file list (xxx.c) */
- XFILENAMELIST *first_incl_file; /* pointer to beginning of file list (xxx.h) */
- XFILENAMELIST *last_incl_file; /* pointer to end of file list (xxx.h) */
- XOPTIONLIST *first_opt; /* pointer to beginning of option list */
- XOPTIONLIST *last_opt; /* pointer to end of option list */
- XSYMBTABEL *symbtab; /* pointer to beginning of symbol table */
- XSYMBTABEL *last_symb; /* pointer to end of symbol table */
- X#ifdef LINUX
- Xint yylineno;
- X#endif
- X
- X/******************************************************************************
- X * main() *
- X * *
- X * The function main. *
- X * *
- X * Return values: OK upon success / ERROR upon error *
- X ******************************************************************************/
- Xmain(argc, argv)
- Xint argc;
- Xchar *argv[];
- X{
- X int i;
- X char localhostname[MAXHOSTNAMELEN];
- X SYMBTABEL *local_host, *dummy, *class, *symbol,
- X *acthost, *actfsys, *cc_host;
- X char *descr;
- X
- X /* some initializations */
- X prepare = clean = o_flag = c_flag = alltargets = FALSE;
- X crosscompile = checkfile = checktargets = FALSE;
- X localtarget = noexecute = verbose = FALSE;
- X symbtab = NULL;
- X targetname = NULL;
- X first_incl_file = last_incl_file = NULL;
- X cfgfilename[0] = 0;
- X
- X /* is there any job? */
- X if (argc == 1) {
- X fprintf(stderr, "%s\n%s\n%s\n\n", progname, version, copyright);
- X fputs("Error: nothing to do\n\n", stderr);
- X DisplayUsage();
- X exit(ERROR);
- X }
- X
- X /* check command line for '-f' option */
- X for(i = 1; i < argc; i++) {
- X if (!strcmp(argv[i], "-f")) {
- X /* Option: "-f filename" */
- X strcpy(cfgfilename, argv[++i]);
- X#ifdef DEBUG
- X printf("Option recognized: \"-f %s\"\n", cfgfilename);
- X#endif /* DEBUG /**/
- X break;
- X }
- X } /* for */
- X
- X /* search default file in home directory */
- X if (cfgfilename[0] == 0)
- X sprintf(cfgfilename, "%s/%s", getenv("HOME"), CFGFILENAME);
- X
- X /* interpret system configuration file */
- X if (!(yyin = fopen(cfgfilename, "r"))) {
- X fprintf(stderr, "Error: can't open system configuration file \"%s\"\n",
- X cfgfilename);
- X exit(ERROR);
- X } else {
- X (void) parse_system();
- X (void) close(yyin);
- X }
- X
- X /* parse command line (must follow reading of cfg file!!!) */
- X if (ParseOptions(argc, argv)) {
- X DisplayUsage();
- X exit(ERROR);
- X }
- X
- X /* determine hostname of local host */
- X if (gethostname(localhostname, MAXHOSTNAMELEN)) {
- X fputs("Error: can't determine name of local host!\n", stderr);
- X exit(ERROR);
- X }
- X
- X /* determine host informtion of local host */
- X if (!(local_host = lookup_symbtabel(localhostname))) {
- X fputs("Error: local hostname is not defined in configuration file\n", stderr);
- X exit(ERROR);
- X }
- X
- X if (localtarget)
- X local_host->info.Host.istarget = TRUE;
- X
- X /* prepare all target hosts if specified as command line option */
- X if (prepare) {
- X for(acthost = symbtab; acthost; acthost = acthost->next) {
- X if (acthost->type != S_HOST || acthost->info.Host.ex_storage->info.disk.wasprepared)
- X continue;
- X PrepareTarget(local_host, acthost);
- X }
- X }
- X
- X /* generate the requested object files or executables for all targets
- X * specified in the command line
- X */
- X if (c_flag || o_flag || first_file || first_incl_file) {
- X for(dummy = symbtab; dummy; dummy = dummy->next) {
- X
- X if (dummy->type != S_HOST || !dummy->info.Host.istarget || dummy->info.Host.wasmade)
- X continue;
- X
- X TransferFiles(local_host, dummy);
- X
- X CompileFiles(local_host, dummy);
- X
- X dummy->info.Host.wasmade = TRUE;
- X
- X } /* for(dummy) */
- X }
- X
- X /* clean all target hosts if specified as command line option */
- X if (clean) {
- X for(acthost = symbtab; acthost; acthost = acthost->next) {
- Xif (acthost->type != S_HOST || acthost->info.Host.ex_storage->info.disk.wasprepared)
- X if (acthost->type != S_HOST || !acthost->info.Host.istarget
- X || acthost->info.Host.ex_storage->info.disk.wascleaned)
- X continue;
- X CleanTarget(local_host, acthost);
- X }
- X }
- X
- X exit(OK);
- X} /* main */
- END_OF_FILE
- if test 7420 -ne `wc -c <'dcinstall/main.c'`; then
- echo shar: \"'dcinstall/main.c'\" unpacked with wrong size!
- fi
- # end of 'dcinstall/main.c'
- fi
- if test -f 'include/com_Errno.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'include/com_Errno.h'\"
- else
- echo shar: Extracting \"'include/com_Errno.h'\" \(7384 characters\)
- sed "s/^X//" >'include/com_Errno.h' <<'END_OF_FILE'
- X/***************************************************************************
- X * *
- X * @@@@ @@@ @@@@@ @@@@@ @@@@@ @@@ @@@@ @ @ @@@@@ @@@@@ @@@@ @@@ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @ @ @ @@@@@ @ @@@@@ @ @@@@@ @ @ @ @@@@@ @ @ @ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @@@@ @@@ @@@@@ @ @ @ @@@ @@@@ @@@@@ @ @@@@@ @@@@ @@@ *
- X * *
- X * A compiler for distributed programming with C *
- X * *
- X * c o m _ E r r n o . h *
- X * *
- X * Package : Include files *
- X * Version : 1.0 *
- X * CreationDate : 10.07.90 *
- X * LastUpDate : 30.08.91 *
- X * *
- X * Error codes of compiler errors. *
- X * *
- X * Copyright (C) 1990-1994 by Franz Distler and Christoph Pleier. *
- X * All rights reserved! *
- X ***************************************************************************/
- X
- X/*
- X * This file is part of the Distributed C Development Environment (DCDE).
- X * DCDE is free software; you can redistribute it and/or modify
- X * it under the terms written in the README-file.
- X * DCDE is distributed in the hope that it will be useful,
- X * but WITHOUT ANY WARRANTY; without even the implied warranty of
- X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- X * See the file README for more details.
- X */
- X
- X#ifndef __com_Errno_h
- X#define __com_Errno_h
- X
- X/* syntax error */
- X#define ESYNTAX 0
- X
- X/* redefinition of an identifier */
- X#define EREDEFINITION 1
- X
- X/* definition or creation of not specified process */
- X#define ENOTSPECIFIED 2
- X
- X/* redefinition of a process body */
- X#define EREDEFINED 3
- X
- X/* creation of not defined process */
- X#define ENOTDEFINED 4
- X
- X/* call of not specified transaction */
- X#define EILLTRANSCALL 5
- X
- X/* badly placed accept statement */
- X#define EBADLYACCEPT 6
- X
- X/* no variable and no parameter */
- X#define ENOVARORPAR 7
- X
- X/* error in process specification */
- X#define EINPROCSPEC 8
- X
- X/* process parameter expected */
- X#define EPROCPAREXP 9
- X
- X/* process parameter expected */
- X#define EPROCPAREXP2 10
- X
- X/* error in process parameter declaration */
- X#define EINPROCPARAM 11
- X
- X/* process transaction expected */
- X#define EPROCTRANSEXP 12
- X
- X/* process transaction expected */
- X#define EPROCTRANSEXP2 13
- X
- X/* error in process transaction declaration */
- X#define EINTRANSDECL 14
- X
- X/* error in process transaction declaration */
- X#define EINTRANSDECL2 15
- X
- X/* error in process transaction declaration */
- X#define EINTRANSDECL3 16
- X
- X/* error in process definition */
- X#define EINPROCDEF 17
- X
- X/* error in accept statement */
- X#define EINACCSTAT 18
- X
- X/* error in accept statement */
- X#define EINACCSTAT2 19
- X
- X/* error in accept statement */
- X#define EINACCSTAT3 20
- X
- X/* error in accept statement */
- X#define EINACCSTAT4 21
- X
- X/* error in select statement */
- X#define EINSELSTAT 22
- X
- X/* error in select statement */
- X#define EINSELSTAT2 23
- X
- X/* error in select part */
- X#define EINSELPART 24
- X
- X/* error in accept alternative */
- X#define EINACCALTERN 25
- X
- X/* error in destroy statement */
- X#define EINDESTRSTAT 26
- X
- X/* error in timed transaction call */
- X#define EINTIMEDTRANS 27
- X
- X/* error in process creation */
- X#define EINPROCCREATE 28
- X
- X/* error in process creation */
- X#define EINPROCCREATE2 29
- X
- X/* error in process creation */
- X#define EINPROCCREATE3 30
- X
- X/* error in process arguments */
- X#define EINPROCARGS 31
- X
- X/* error in process location */
- X#define EINPROCLOC 32
- X
- X/* error in transaction call */
- X#define EINTRANSCALL 33
- X
- X/* error: 'const' is not allowed in structure definitions */
- X#define EILLCONST 34
- X
- X/* error: 'volatile' is not allowed in structure definitions */
- X#define EILLVOLATILE 35
- X
- X/* error: 'void' is not allowed in structure definitions */
- X#define EILLVOID 36
- X
- X/* error: too many type specifiers at 'char' */
- X#define EILLCHAR 37
- X
- X/* error: too many type specifiers at 'short' */
- X#define EILLSHORT 38
- X
- X/* error: too many type specifiers at 'int' */
- X#define EILLINT 39
- X
- X/* error: too many type specifiers at 'long' */
- X#define EILLLONG 40
- X
- X/* error: too many type specifiers at 'float' */
- X#define EILLFLOAT 41
- X
- X/* error: too many type specifiers at 'double' */
- X#define EILLDOUBLE 42
- X
- X/* error: too many type specifiers at 'process' */
- X#define EILLPROCESS 43
- X
- X/* error: badly placed 'signed' */
- X#define EILLSIGNED 44
- X
- X/* error: badly placed 'unsigned' */
- X#define EILLUNSIGNED 45
- X
- X/* error: enumerations are not allowed in special used structures */
- X#define EILLENUM 46
- X
- X/* error: bitfields are not allowed in special used structures */
- X#define EILLBITFIELD 47
- X
- X/* error: illegal pointer */
- X#define EILLPOINTER 48
- X
- X/* error: too many pointers in special used structure */
- X#define EMANYPOINTER 49
- X
- X/* error: type qualifier in combination with pointer is not allowed here */
- X#define EILLPOINTQUAL 50
- X
- X/* error: function definitions are not allowed in special used structures */
- X#define EILLFUNCTION 51
- X
- X/* error: arrays are not allowed in special used structures */
- X#define EILLARRAY 52
- X
- X/* error: unknown array size */
- X#define EARRAYSIZE 53
- X
- X/* error: braces '(' ')' are not allowed in combination with arrays */
- X#define EILLARRBRACES 54
- X
- X/* error: function definitions are not allowed before arrays */
- X#define EILLARRFUNCT 55
- X
- X/* error: multiple dimensional arrays are not allowed here */
- X#define EMULTIARRAY 56
- X
- X/* error: braces '(' ')' are not allowed in special used structures */
- X#define EILLBRACES 57
- X
- X/* error: typedef names are not allowed in special used structures */
- X#define EILLTYPENAME 58
- X
- X/* error: 'auto' is not allowed in special used typedefs */
- X#define EILLAUTO 59
- X
- X/* error: 'register' is not allowed in special used typedefs */
- X#define EILLREGISTER 60
- X
- X/* error: 'static' is not allowed in special used typedefs */
- X#define EILLSTATIC 61
- X
- X/* error: 'extern' is not allowed in special used typedefs */
- X#define EILLEXTERN 62
- X
- X/* error: illegal typedef */
- X#define EILLTYPEDEF 63
- X
- X/* error: 'const' is not allowed in special used typedefs */
- X#define EILLCONST2 64
- X
- X/* error: 'volatile' is not allowed in special used typedefs */
- X#define EILLVOLATILE2 65
- X
- X/* error: 'void' is not allowed in special used typedefs */
- X#define EILLVOID2 66
- X
- X/* error: enumerations are not allowed in special used typedefs */
- X#define EILLENUM2 67
- X
- X/* error: structure definition inside of struct definition requires tag name */
- X#define EISTRUCTTAG 68
- X
- X/* error: structure definition of type definition requires tag name */
- X#define ETSTRUCTTAG 69
- X
- X/* fatal error: cannot recover from errors */
- X#define FCANTRECOVER 70
- X
- X/* warning, too few arguments for process creation */
- X#define WPROCESSARGS 71
- X
- X/* warning, too few arguments for transaction call */
- X#define WTRANSARGS 72
- X
- X#endif /* !__com_Errno_h */
- END_OF_FILE
- if test 7384 -ne `wc -c <'include/com_Errno.h'`; then
- echo shar: \"'include/com_Errno.h'\" unpacked with wrong size!
- fi
- # end of 'include/com_Errno.h'
- fi
- if test -f 'include/globals.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'include/globals.h'\"
- else
- echo shar: Extracting \"'include/globals.h'\" \(7825 characters\)
- sed "s/^X//" >'include/globals.h' <<'END_OF_FILE'
- X/***************************************************************************
- X * *
- X * @@@@ @@@ @@@@@ @@@@@ @@@@@ @@@ @@@@ @ @ @@@@@ @@@@@ @@@@ @@@ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @ @ @ @@@@@ @ @@@@@ @ @@@@@ @ @ @ @@@@@ @ @ @ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @@@@ @@@ @@@@@ @ @ @ @@@ @@@@ @@@@@ @ @@@@@ @@@@ @@@ *
- X * *
- X * A compiler for distributed programming with C *
- X * *
- X * g l o b a l s . h *
- X * *
- X * Package : Include files *
- X * Version : 1.0 *
- X * CreationDate : 14.08.90 *
- X * LastUpDate : 06.12.93 *
- X * *
- X * Global variables and tables. *
- X * *
- X * Copyright (C) 1990-1994 by Franz Distler and Christoph Pleier. *
- X * All rights reserved! *
- X ***************************************************************************/
- X
- X/*
- X * This file is part of the Distributed C Development Environment (DCDE).
- X * DCDE is free software; you can redistribute it and/or modify
- X * it under the terms written in the README-file.
- X * DCDE is distributed in the hope that it will be useful,
- X * but WITHOUT ANY WARRANTY; without even the implied warranty of
- X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- X * See the file README for more details.
- X */
- X
- X/* the symbol table */
- XSYMBTAB symbtab;
- X
- X/* the global variable to store the actual error */
- Xint Errno = -1;
- X
- X/* the flag controlling error handling.
- X * while errflag is set, the semantical functions are not executed!
- X */
- Xshort errflag = FALSE;
- X
- X/* the flag indicating an error during a process specification */
- Xshort specerr = FALSE;
- X
- X/* the flag controlling creation of code.
- X * while outcodeflag is set, the creation of code is stopped!
- X */
- Xshort outcodeflag = FALSE;
- X
- X/* the flag indicating parsing of a process body or not */
- Xshort bodyflag = FALSE;
- X
- X/* the flag indicating function main() was declared or not */
- Xshort mainflag = FALSE;
- X
- X/* this flag controls code generation in include files.
- X * while sysinclflag is set, no code will be stored using Strcat(),
- X * Strcatmany() * or strmalloc()!
- X */
- Xshort sysinclflag = FALSE;
- X
- X/* the functions are collected in a special function file. The appropriate
- X * file header may only be written once to this file. funcflag is used to
- X * indicate if the header has already be written or not.
- X */
- Xshort funcflag = FALSE;
- X
- X/* the functions to create processes and to perform transactions are collected
- X * in a special file. The appropriate file header may only be written once to
- X * this file. specflag is used to indicate if the header has already be written
- X * or not.
- X */
- Xshort specflag = FALSE;
- X
- X#if defined(HETEROGENEOUS) || defined(CHECK_XDR)
- X/* the xdr routines to encode and decode data are collected in a special file.
- X * The appropriate file header may only be written once to this file. xdrflag
- X * is used to indicate if the header has already be written or not.
- X */
- Xshort xdrflag = FALSE;
- X#endif /* HETEROGENEOUS /**/
- X
- X/* this flags control the various passes */
- Xshort allflag = FALSE, /* compile and link files or not */
- X beautyflag = FALSE, /* beautify generated files or not */
- X infoflag = FALSE, /* display infos about internal actions */
- X cppflag = FALSE; /* preprocess source files only or not */
- X
- X#ifndef YYDEBUG
- X/* the flag indicating output of additional parsing information. If yydebug
- X * equals 1 additional information will be displayed.
- X */
- X# ifdef UNICOS
- Xlong yydebug = 0;
- X# else
- Xint yydebug = 0;
- X# endif /* UNICOS /**/
- X#endif /* YYDEBUG /**/
- X
- X/* the actual line number in the parsed file */
- X#ifdef LINUX
- Xint yylineno;
- X#endif /* LINUX /**/
- X
- X#ifdef HETEROGENEOUS
- X/* the flag indicating if code shall be generated to determine the buffer size
- X * of the encode/decode buffer or to use a fixed value.
- X */
- Xshort determine_dcc_buf_size = TRUE;
- X
- X/* the size specified as command line option */
- Xchar *encode_decode_buf_size = NULL;
- X
- X/* print warning only one times */
- Xshort encode_warning = FALSE;
- X#endif /* HETEROGENEOUS /**/
- X
- X/* files */
- XFILE *yyerrfile = NULL, /* for error messages */
- X *outfile = NULL, /* for main program */
- X *inclfile = NULL, /* for dynamic includefile */
- X *funcfile = NULL, /* for functions */
- X *creatfile = NULL, /* for specific process creation routines */
- X#if defined(HETEROGENEOUS) || defined(CHECK_XDR)
- X *xdrfile = NULL, /* for xdr routines */
- X#endif
- X *makefile = NULL, /* for makefile */
- X *debugfile = NULL; /* for debug messages */
- X
- X/* filenames */
- Xchar *inputfilename,
- X *yyerrfilename,
- X outputfilename[MAXFILENAMELEN],
- X funcfilename[MAXFILENAMELEN],
- X inclfilename[MAXFILENAMELEN],
- X creatfilename[MAXFILENAMELEN],
- X#if defined(HETEROGENEOUS) || defined(CHECK_XDR)
- X xdrfilename[MAXFILENAMELEN],
- X#endif
- X makefilename[MAXFILENAMELEN],
- X filenameprefix[MAXFILENAMELEN];
- X
- X/* strings to store special data temporary */
- Xchar *crextstr, /* the extern declarations of the creation routines */
- X *trextstr, /* the declarations of the transaction call routines */
- X#if defined(HETEROGENEOUS) || defined(CHECK_XDR)
- X *xdrextstr, /* the extern declarations of the xdr routines */
- X#endif
- X *fnextstr, /* the extern declarations of functions */
- X *errormesg; /* error message utility */
- X
- X/* string to store specified makefile options to pass to the generated
- X * makefile
- X */
- Xchar *libsstr = "", /* libraries */
- X *cflagsstr = "", /* compiler flags */
- X *lflagsstr = ""; /* loader flags */
- X
- X/* counters */
- Xint phase = 0, /* compiler phase */
- X blknum = 0, /* block depth counter */
- X processnum = 0, /* process counter */
- X transnum = 0, /* transaction counter */
- X yynwarns = 0, /* compiler warnings */
- X translabel = 0; /* transaction labels */
- X
- X/* during parsing of the declaration of process variables processptr points to
- X * the symbol table entry containing the corresponding process declaration.
- X */
- XSYMBTABEL *processptr;
- X
- X/* buffer to store the result of convert attribute to string routines */
- Xchar *convert_buffer;
- X
- X/* prefix for displaying informations about internal actions */
- Xchar *infoprefix = "***";
- X
- X/* the include files for processes and the main program */
- Xchar *includefiles[] =
- X { "\"/usr/include/stdio.h\"",
- X "\"/usr/include/sys/types.h\"",
- X ""
- X };
- X
- X/* anchors of process list */
- Xstruct process_list *first_processname = NULL,
- X *last_processname = NULL;
- X
- X/* anchors of include list */
- Xstruct include_list *first_includename = NULL,
- X *last_includename = NULL;
- X
- X/* anchors of additional include paths */
- Xstruct include_path_list *first_inclpathname = NULL,
- X *last_inclpathname = NULL;
- X
- X/* anchors of additional preprocessor definitions */
- Xstruct cpp_def_list *first_cppdef = NULL,
- X *last_cppdef = NULL;
- X
- X/* anchors of list of symbol table entries of structure and type definitions */
- Xstruct struct_type_list *first_structtype = NULL,
- X *last_structtype = NULL;
- END_OF_FILE
- if test 7825 -ne `wc -c <'include/globals.h'`; then
- echo shar: \"'include/globals.h'\" unpacked with wrong size!
- fi
- # end of 'include/globals.h'
- fi
- if test -f 'include/run_errlist.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'include/run_errlist.h'\"
- else
- echo shar: Extracting \"'include/run_errlist.h'\" \(7317 characters\)
- sed "s/^X//" >'include/run_errlist.h' <<'END_OF_FILE'
- X/***************************************************************************
- X * *
- X * @@@@ @@@ @@@@@ @@@@@ @@@@@ @@@ @@@@ @ @ @@@@@ @@@@@ @@@@ @@@ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @ @ @ @@@@@ @ @@@@@ @ @@@@@ @ @ @ @@@@@ @ @ @ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @@@@ @@@ @@@@@ @ @ @ @@@ @@@@ @@@@@ @ @@@@@ @@@@ @@@ *
- X * *
- X * A compiler for distributed programming with C *
- X * *
- X * r u n _ e r r l i s t . h *
- X * *
- X * Package : Include files *
- X * Version : 1.0 *
- X * CreationDate : 14.08.90 *
- X * LastUpDate : 12.03.92 *
- X * *
- X * The table containing the runtime error messages. *
- X * *
- X * Copyright (C) 1990-1994 by Franz Distler and Christoph Pleier. *
- X * All rights reserved! *
- X ***************************************************************************/
- X
- X/*
- X * This file is part of the Distributed C Development Environment (DCDE).
- X * DCDE is free software; you can redistribute it and/or modify
- X * it under the terms written in the README-file.
- X * DCDE is distributed in the hope that it will be useful,
- X * but WITHOUT ANY WARRANTY; without even the implied warranty of
- X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- X * See the file README for more details.
- X */
- X
- X#ifndef __run_errlist_h
- X#define __run_errlist_h
- X
- X/* the names in braces mean:
- X * AP - Administration Process
- X * CP - Creator Process
- X * NP - New created Process
- X * TC - Transaction Caller
- X * TA - Transaction Acceptor
- X * TAS - Transaction Acceptor during Select
- X * P - any Process
- X */
- X
- Xchar *runtime_errlist[] = {
- X
- X /* EFATAL */
- X "fatal error",
- X
- X /* ESYSTEMDPNT */
- X "system dependent error",
- X
- X /* ECREATEPORT */
- X "unable to create a new port",
- X
- X /* EDELETEPORT */
- X "unable to delete specified port",
- X
- X /* EACPTCON */
- X "error accepting connection",
- X
- X /* EMAKECON */
- X "error making connection",
- X
- X /* ECLOSECON */
- X "error closing connection",
- X
- X /* ERECVDATA */
- X "error receiving data",
- X
- X /* ESENDDATA */
- X "error sending data",
- X
- X /* ECONREFUSED */
- X "connection refused",
- X
- X /* ETIMEOUT */
- X "operation timed out",
- X
- X /* ETCCPTONPACC */
- X "Timeout error: (CP) created process doesn't report back",
- X
- X /* ETCCPTONPCON */
- X "Timeout error: (CP) can't connect to new created process",
- X
- X /* ETCCPTONPRCV */
- X "Timeout error: (CP) new process doesn't send process data",
- X
- X /* ETCCPTONPPAR */
- X "Timeout error: (CP) can't send initial parameters to new process",
- X
- X /* ETCCPTONPPDAT */
- X "Timeout error: (CP) can't send port information to new process",
- X
- X /* ETCCPTOAPCON */
- X "Timeout error: (CP) can't connect to administration process",
- X
- X /* ETCCPTOAPREQ */
- X "Timeout error: (CP) can't send location request to administration process",
- X
- X /* ETCCPTOAPSND */
- X "Timeout error: (CP) can't send processname to administration process",
- X
- X /* ETCCPTOAPRCV */
- X "Timeout error: (CP) can't get location info from administration process",
- X
- X /* ETCNPTOAPCON */
- X "Timeout error: (NP) can't connect to administration process",
- X
- X /* ETCNPTOAPREQ */
- X "Timeout error: (NP) can't send request to administration process",
- X
- X /* ETCNPTOAPSND */
- X "Timeout error: (NP) can't send process data to administration process",
- X
- X /* ETCNPTOCPCON */
- X "Timeout error: (NP) can't connect to creator process",
- X
- X /* ETCNPTOCPACC */
- X "Timeout error: (NP) creator process doesen't request connection",
- X
- X /* ETCNPTOCPSND */
- X "Timeout error: (NP) can't send process data back to creator",
- X
- X /* ETCNPGETPARA */
- X "Timeout error: (NP) can't receive parameters from creator process",
- X
- X /* ETCNPGETPDAT */
- X "Timeout error: (NP) can't receive port information from creator process",
- X
- X /* ETTCONTOPROC */
- X "Timeout error: (TC) can't connect to called process",
- X
- X /* ETTSNDREQUEST */
- X "Timeout error: (TC) can't send transaction request message",
- X
- X /* ETTRCVREPLY */
- X "Timeout error: (TC) called process doesn't send reply message",
- X
- X /* ETTSENDARGS */
- X "Timeout error: (TC) can't send transaction arguments to called process",
- X
- X /* ETTRCVRESULT */
- X "Timeout error: (TC) can't receive transaction result",
- X
- X /* ETAACCEPTCON */
- X "Timeout error: (TA) can't accept transaction request connection",
- X
- X /* ETARCVREQUEST */
- X "Timeout error: (TA) can't receive transaction request message",
- X
- X /* ETASENDREPLY */
- X "Timeout error: (TA) can't send transaction reply message",
- X
- X /* ETARCVPARAMS */
- X "Timeout error: (TA) can't receive transaction parameters",
- X
- X /* ETASNDRESULT */
- X "Timeout error: (TA) can't send transaction result",
- X
- X /* ETSACCEPTCON */
- X "Timeout error: (TAS) can't accept transaction request connection",
- X
- X /* ETSRCVREQUEST */
- X "Timeout error: (TAS) can't receive transaction request message",
- X
- X /* ETSSENDREPLY */
- X "Timeout error: (TAS) can't send transaction reply message",
- X
- X /* ETSRCVPARAMS */
- X "Timeout error: (TAS) can't receive transaction parameters",
- X
- X /* ETSSNDRESULT */
- X "Timeout error: (TAS) can't send transaction result",
- X
- X /* ETCAPTOCPCON */
- X "Timeout error: (AP) can't connect to creator process",
- X
- X /* ETCAPTOCPACC */
- X "Timeout error: (AP) can't get connection to receive config filename",
- X
- X /* ETCAPTOCPRCV */
- X "Timeout error: (AP) can't receive config filename",
- X
- X /* ETCADRCVNAME */
- X "Timeout error: (AP) can't receive process name to determine location of",
- X
- X /* ETCADSNDLOC */
- X "Timeout error: (AP) can't send process creation location result",
- X
- X /* ETCONNTYPESND */
- X "Timeout error: (P) can't send connection type",
- X
- X /* ETCONNTYPERCV */
- X "Timeout error: (P) can't receive connection type",
- X
- X /* EPROCSTOPPED */
- X "(TA) called process terminated during transaction execution",
- X
- X /* EPROCESSCREAT */
- X "(P) can't create new process",
- X
- X /* EPROCESSKILL */
- X "(P) can't kill process",
- X
- X /* EEXECPROCESS */
- X "(P) can't transform process using execv",
- X
- X /* EHOSTNAME */
- X "(P) can't determine hostname by gethostname()",
- X
- X /* EMALLOCBUF */
- X "error allocating heap space for encode/decode buffer",
- X
- X /* EENCODE */
- X "(P) error encoding data. Perhaps only '_dcc_buf_size' is too little!",
- X
- X /* EENCODESIZE */
- X "(P) resulting size of converted data is too large. Resize '_dcc_buf_size'.",
- X
- X /* EDECODE */
- X "(P) error decoding data. Perhaps only '_dcc_buf_size' is too little!",
- X
- X /* EXDRSETPOS */
- X "(P) error: xdr_setpos() does not work!"
- X};
- X
- X#endif /* !__run_errlist_h /**/
- END_OF_FILE
- if test 7317 -ne `wc -c <'include/run_errlist.h'`; then
- echo shar: \"'include/run_errlist.h'\" unpacked with wrong size!
- fi
- # end of 'include/run_errlist.h'
- fi
- if test -f 'ipc/p1.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'ipc/p1.c'\"
- else
- echo shar: Extracting \"'ipc/p1.c'\" \(8046 characters\)
- sed "s/^X//" >'ipc/p1.c' <<'END_OF_FILE'
- X/***************************************************************************
- X * *
- X * @@@@ @@@ @@@@@ @@@@@ @@@@@ @@@ @@@@ @ @ @@@@@ @@@@@ @@@@ @@@ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @ @ @ @@@@@ @ @@@@@ @ @@@@@ @ @ @ @@@@@ @ @ @ *
- X * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *
- X * @@@@ @@@ @@@@@ @ @ @ @@@ @@@@ @@@@@ @ @@@@@ @@@@ @@@ *
- X * *
- X * A precompiler for distributed programming with C *
- X * *
- X * p 1 . c *
- X * *
- X * Version 1.0 CreationDate: 15.07.90 *
- X * LastUpDate: 24.09.90 *
- X * *
- X * Process 1 for testing the communication primitives. *
- X * *
- X * Copyright (C) 1990 by Franz Distler and Christoph Pleier. *
- X * All rights reserved! *
- X ***************************************************************************/
- X
- X/*
- X * This file is part of the Distributed C Development Environment (DCDE).
- X * DCDE is free software; you can redistribute it and/or modify
- X * it under the terms written in the README-file.
- X * DCDE is distributed in the hope that it will be useful,
- X * but WITHOUT ANY WARRANTY; without even the implied warranty of
- X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- X * See the file README for more details.
- X */
- X
- X#include <stdio.h>
- X#include <sys/types.h>
- X#include "run_Errno.h"
- X#include "ipc.h"
- X
- X#ifdef SYSTEM_V
- X# define u_short int
- X#endif /* SYSTEM_V /**/
- X
- X#define DELAY 10
- X#define MSGNUM 100
- X
- Xint Errno;
- XPORTDESCR own_port1,
- X own_port2,
- X P2_port;
- XCONNECTIONDESCR con_port1,
- X con_port2;
- X
- X/* global variables needed for the library functions! */
- Xchar *_programname = "p1",
- X *_processname = "P1";
- XPORTDESCR _own_port,
- X _creator_port, /* unused, but needed! */
- X _admin_port; /* unused, but needed! */
- XCONNECTIONDESCR _con_port;
- X
- Xmain()
- X{
- X int i, res;
- X char buffer[100], buffer2[100];
- X
- X puts("dcc - distributed c compiler");
- X puts("Copyright (C) 1990 by Franz Distler and Christoph Pleier\n");
- X puts("Process p1 used for testing the communication primitives");
- X puts("Remark: the starting order is: p1, p2, p3");
- X if (_create_port(&own_port1))
- X _RuntimeError("P1: Error creating own port 1");
- X#ifndef iPSC
- X _display_port_info("P1: port 1", own_port1);
- X#endif /* iPSC /**/
- X
- X#ifdef iPSC
- X P2_port.node = 6;
- X P2_port.pid = 101;
- X#else
- X puts("P1: Enter port information of port 1 of process P2:");
- X _input_port_info(&P2_port);
- X#endif /* iPSC /**/
- X
- X puts("\nP1: Testing Rendezvous");
- X puts("P1: Test 1a: accept_connection(...,'P1',0)");
- X if (_accept_connection(&con_port1, own_port1, 0))
- X _RuntimeError("P1: Error accepting connection");
- X puts("P1: Test 1a: receiving 2 messages");
- X if (_recv_data(con_port1, buffer, 18, 0) < 0)
- X _RuntimeError("P1: Error in recv_data 1");
- X if (strcmp(buffer, "Test 1: Message 1")) {
- X puts("P1: Error: wrong message received!");
- X _close_connection(con_port1);
- X _delete_port(own_port1);
- X exit(-1);
- X }
- X if (_recv_data(con_port1, buffer, 18, 0) < 0)
- X _RuntimeError("P1: Error in recv_data 2");
- X if (strcmp(buffer, "Test 1: Message 2")) {
- X puts("P1: Error: wrong message received!");
- X _close_connection(con_port1);
- X _delete_port(own_port1);
- X exit(-1);
- X }
- X puts("P1: Test 1a: sending 1 message");
- X strcpy(buffer, "Test 1: Message 3");
- X if (_send_data(con_port1, buffer, 18, 10) < 0)
- X _RuntimeError("P1: Error in send_data 1");
- X puts("P1: Test 1a: receiving 1 message");
- X if (_recv_data(con_port1, buffer, 18, 10) < 0)
- X _RuntimeError("P1: Error in recv_data 3");
- X if (strcmp(buffer, "Test 1: Message 4")) {
- X puts("P1: Error: wrong message received!");
- X _close_connection(con_port1);
- X _delete_port(own_port1);
- X exit(-1);
- X }
- X if (_close_connection(con_port1))
- X _RuntimeError("P1: Error closing connection");
- X puts("P1: Test 1b: make_connection(...,'P1','P2',0)");
- X if (_make_connection(&con_port1, own_port1, P2_port, 0))
- X _RuntimeError("P1: Error making connection");
- X puts("P1: Test 1b: receiving 2 messages");
- X if (_recv_data(con_port1, buffer, 18, 0) < 0)
- X _RuntimeError("P1: Error in recv_data 1");
- X if (strcmp(buffer, "Test 1: Message 1")) {
- X puts("P1: Error: wrong message received!");
- X _close_connection(con_port1);
- X _delete_port(own_port1);
- X exit(-1);
- X }
- X if (_recv_data(con_port1, buffer, 18, 0) < 0)
- X _RuntimeError("P1: Error in recv_data 2");
- X if (strcmp(buffer, "Test 1: Message 2")) {
- X puts("P1: Error: wrong message received!");
- X _close_connection(con_port1);
- X _delete_port(own_port1);
- X exit(-1);
- X }
- X puts("P1: Test 1b: sending 1 message");
- X strcpy(buffer, "Test 1: Message 3");
- X if (_send_data(con_port1, buffer, 18, 10) < 0)
- X _RuntimeError("P1: Error in send_data 1");
- X puts("P1: Test 1b: receiving 1 message");
- X if (_recv_data(con_port1, buffer, 18, 10) < 0)
- X _RuntimeError("P1: Error in recv_data 3");
- X if (strcmp(buffer, "Test 1: Message 4")) {
- X puts("P1: Error: wrong message received!");
- X _close_connection(con_port1);
- X _delete_port(own_port1);
- X exit(-1);
- X }
- X if (_close_connection(con_port1))
- X _RuntimeError("P1: Error closing connection");
- X puts("P1: Rendezvous is OK");
- X
- X puts("\nP1: Testing timeouts");
- X puts("P1: Test 2a: accept_connection(...,'P1',5)");
- X res = _accept_connection(&con_port1, own_port1, 5);
- X if (res < 0 && Errno != ETIMEOUT)
- X _RuntimeError("P1: Error accepting connection");
- X
- X if (_create_port(&own_port2))
- X _RuntimeError("P1: Error creating dummy port");
- X puts("P1: Test 2b: make_connection(...,'P1','dummy',5)");
- X res = _make_connection(&con_port1, own_port1, own_port2, 5);
- X if (res < 0 && Errno != ETIMEOUT)
- X _RuntimeError("P1: Error making connection");
- X _delete_port(own_port2);
- X
- X puts("P1: Test 2c: make_connection(...,'P1','P2',0)");
- X if (_make_connection(&con_port1, own_port1, P2_port, 0))
- X _RuntimeError("P1: Error making connection");
- X puts("P1: Test 2c: recv_data(..., ..., ..., 5)");
- X res = _recv_data(con_port1, buffer, 10, 5);
- X if (res < 0 && Errno != ETIMEOUT)
- X _RuntimeError("P1: Error reading data");
- X if (res >= 0) {
- X puts("P1: Error in implementation of recv_data: message received!");
- X _close_connection(con_port1);
- X _delete_port(own_port1);
- X exit(-1);
- X }
- X
- X#ifdef iPSC
- X printf("P1: Test 2d: waiting %d seconds\n", DELAY);
- X sleep(DELAY);
- X#endif /* iPSC /**/
- X
- X puts("P1: Test 2d: send_data(..., ..., ..., 5)");
- X res = _send_data(con_port2, buffer, 10, 5);
- X if (res < 0 && Errno != ETIMEOUT)
- X _RuntimeError("P1: Error writing data");
- X if (res >= 0) {
- X puts("P1: Error in implementation of send_data: message sent!");
- X _delete_port(own_port1);
- X exit(-1);
- X }
- X puts("P1: timeouts are OK");
- X
- X puts("\nP1: Testing mutual exclusion of connections");
- X printf("P1: Test 3: receiving %d messages\n", MSGNUM);
- X for (i=1; i<=100; i++) {
- X if (_recv_data(con_port1, buffer, 22, 0) < 0)
- X _RuntimeError("P1: Error in recv_data");
- X sprintf(buffer2, "Test 3: Message %3d", i);
- X if (strcmp(buffer, buffer2)) {
- X puts("P1: Error: wrong message received!");
- X _close_connection(con_port1);
- X _delete_port(own_port1);
- X exit(-1);
- X }
- X }
- X puts("P1: mutual exclusion of connections is OK");
- X
- X
- X puts("\nP1: The test was successful.");
- X puts("P1: The communication primitives seem to be correct implemented");
- X sleep(10);
- X _delete_port(own_port1);
- X puts("\nP1: Done!");
- X exit(0);
- X} /* main */
- END_OF_FILE
- if test 8046 -ne `wc -c <'ipc/p1.c'`; then
- echo shar: \"'ipc/p1.c'\" unpacked with wrong size!
- fi
- # end of 'ipc/p1.c'
- fi
- echo shar: End of archive 7 \(of 18\).
- cp /dev/null ark7isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 18 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-