DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T n

⟦579dcd974⟧ TextFile

    Length: 3488 (0xda0)
    Types: TextFile
    Names: »name.c«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Gb/name.c« 

TextFile

/*
 * Galactic Bloodshed (Robert Chansky, smq@b)
 * name.c -- rename something to something else
 */

#include "vars.h"
#include "races.h"
#include "ships.h"
#include <ctype.h>
#include <signal.h>
#include <setjmp.h>
#include <strings.h>
extern jmp_buf main_jenv;
int name_shdata,name_stardata;

name(APcount, argn,args)
int APcount;
int argn;
char args[MAXARGS][COMMANDSIZE];
{
planettype *p;
placetype where;
char st[COMMANDSIZE],*ch;
register int i;
bool check=0;
int name_handler();

name_stardata = NEUTRAL_FD;
signal(SIGINT, name_handler);

  if (argn==1) {   /* no args */
    printf("Rename: ");
    scanf("%[^\n]",st);
    getchr();
  } else sscanf(args[1],"%s",st);
  if (!strcmp(st,"race")) {
	if (!enufAP(Sdata.AP, APcount));
	/*free(Race);
	getrace(&Race, Race->Playernum);*/
	printf("Change racial name %s to:",Race->name);
	dots(RNAMESIZE);
	scanf("%[^\n]",Race->name);
	getchr();
	putrace(Race);
	deductAPs(APcount, 0, 1);
	return;
  }
  where = Getplace(st,0);
  if (where.err) {
	printf("Not found.\n");
	return;
  } else if (where.level==LEVEL_SHIP) {
	printf("You cannot name a ship.\n");
	return;
  }

  printf("Rename %s%s to:", (where.level==LEVEL_SHIP) ? 
				"ship " : "" , Dispplace(&where) );
  dots(NAMESIZE);	/* make a bunch of dots */
  scanf("%20[^\n]",st);		/* change "20" if NAMESIZE altered */
  getchr();
  ch = st;
  while (*ch!='\0')
	  check |= (iscntrl(*ch) || (*(ch++)=='/') );
		/* make sure there are no ^'s or '/' in name */
  if (strlen(st) < 1 || check) {
	printf("Illegal name %s.\n", check ? "form" : "length" );
	name_handler();
  }
  switch (where.level) {
     case LEVEL_STAR:
	openstardata(&name_stardata);
	free(Stars[where.snum]);
	getstar(name_stardata, &Stars[where.snum], where.snum);
	if (!enufAP(Stars[where.snum]->AP, APcount))
		name_handler();
	 /* can't name the place if you don't have the most AP's */
	if (!MostAPs(Stars[where.snum])) {
		printf("You don't have the most AP's in that system.\n");
		name_handler();
	}
	strncpy(Stars[where.snum]->name,st,NAMESIZE-1);
	putstar(name_stardata, Stars[where.snum], where.snum);
	close(name_stardata);
	deductAPs(APcount, where.snum, 0);
	break;

     case LEVEL_PLAN:
	openstardata(&name_stardata);
	free(Stars[where.snum]);
	getstar(name_stardata, &Stars[where.snum], where.snum);
	if (!MostAPs(Stars[where.snum])) {
		printf("You don't have the most AP's in that system.\n");
		name_handler();
	}
	strncpy(Stars[where.snum]->pnames[where.pnum],st,NAMESIZE-1);
	putstar(name_stardata, Stars[where.snum], where.snum);
	close(name_stardata);
	deductAPs(APcount, where.snum, 0);
	break;

    /*case LEVEL_SHIP:
	/* shipptr already gotten */
	/*if (where.shipptr->owner!=Playernum || where.err) {
		printf("Name: bad ship #.\n");
		DontOwnErr(where.shipno);
		name_handler();
	}
	strncpy(where.shipptr->name,st,NAMESIZE-1);
	openshdata(&name_shdata);
	putship(name_shdata, where.shipptr, where.shipno);
	close(name_shdata);
	if (where.shipptr->whatorbits==LEVEL_UNIV)
		deductAPs(APcount, 0, 1);
	else 
		deductAPs(APcount, where.shipptr->storbits, 0);
	break;*/

     case LEVEL_UNIV:
     default:
	printf("You can't do that.\n");
	return;
  }
  docommand("cs :");	/* trick */
}


int MostAPs(s)
startype *s;
{
 register int i,t = 0;

  for (i=0; i<MAXPLAYERS; i++)
     if (s->AP[i] > s->AP[t])
	  t = i;

  return (t == Playernum);

}


name_handler(sig, code, scp)
int sig,code;
struct sigcontext *scp;
{
 close(name_stardata);
 close(name_shdata);
 longjmp(main_jenv,1);
}