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 u

⟦6a2214c5c⟧ TextFile

    Length: 2923 (0xb6b)
    Types: TextFile
    Names: »user.c«

Derivation

└─⟦3d0c2be1b⟧ Bits:30001254 ISODE-5.0 Tape
    └─⟦eba4602b1⟧ »./isode-5.0.tar.Z« 
        └─⟦d3ac74d73⟧ 
            └─⟦this⟧ »isode-5.0/quipu/dish/user.c« 

TextFile

#include "quipu/util.h"
#include "quipu/name.h"
#include "quipu/sequence.h"

static struct dua_sequence * current_sequence = NULL_DS;
static struct dua_sequence * top_sequence = NULL_DS;

call_ds (argc,argv)
int argc;
char ** argv;
{
extern char bound;
extern char * myname;
extern char * isodeversion;
extern char * dsapversion;
extern char * quipuversion;
extern PS       rps;
extern DN 	fixed_pos;
extern DN 	user_name;

	if (argc > 1) {
		if (test_arg (argv[1],"-sequence",1)) {
			show_sequence (argv[2]);
			return;
		} else {
			Usage (argv[0]);
			return;
		}
	}

	ps_printf (rps,"ISODE version %s\n",isodeversion);
	ps_printf (rps,"DSAP  version %s\n",dsapversion);
	ps_printf (rps,"QUIPU version %s\n\n",quipuversion);

	ps_print (rps, "Status...\n");
	if (bound)
		ps_printf (rps,"Connected to %s\n",myname);
	else 
		ps_print (rps,"Not connected to a DSA (cache exists)\n");
	ps_print (rps,"Current position: ");
	dn_print (rps, fixed_pos, READOUT);
	ps_print (rps, "\nUser name: ");
	dn_print (rps, user_name, READOUT);
	ps_print (rps, "\n");
	if (current_sequence != NULL_DS)
		ps_printf (rps,"Current sequence '%s'\n",current_sequence->ds_name);
}


set_sequence (str)
char * str;
{
struct dua_sequence *ptr;

	for (ptr = top_sequence; ptr != NULL_DS; ptr=ptr->ds_next)
		if (lexequ (ptr->ds_name,str) == 0) {
			current_sequence = ptr;
			return;
		}

	ptr = ds_alloc();
	ptr->ds_name = strdup (str);
	ptr->ds_data = NULL_DE;
	ptr->ds_last = NULL_DE;
	ptr->ds_next = top_sequence;
	top_sequence = ptr;
	current_sequence = ptr;
}

unset_sequence ()
{
	current_sequence = NULL_DS;
}

add_sequence (adn)
DN adn;
{
struct dua_seq_entry * ptr;
register int x=1;

	if (current_sequence == NULL_DS)
		return (0);
	
	for (ptr=current_sequence->ds_data; ptr != NULL_DE; ptr=ptr->de_next,x++) 
		if (dn_cmp (adn,ptr->de_name) == 0)
			return (x);

	ptr = de_alloc();
	ptr->de_name = dn_cpy (adn);
	ptr->de_next = NULL_DE;
	if (current_sequence->ds_data == NULL_DE) 
		current_sequence->ds_data = ptr;
	else
		current_sequence->ds_last->de_next = ptr;
	current_sequence->ds_last = ptr;
		
	return (x);
}

DN sequence_dn(y)
int y;
{
struct dua_seq_entry * ptr;
register int x = 1;

	if (current_sequence == NULL_DS)
		return (NULLDN);

	for (ptr=current_sequence->ds_data; 
		(ptr != NULL_DE) && (x<y); 
		ptr=ptr->de_next,x++) 
			;		

	if (ptr == NULL_DE)
		return (NULLDN);
	if ( x == y )
		return (ptr->de_name);
	return (NULLDN);
			
}


show_sequence (str)
char * str;
{
struct dua_seq_entry * ptr;
register int x = 1;
extern PS opt;

	if (str != NULLCP)
		set_sequence (str);

	if (current_sequence == NULL_DS) {
		ps_print (opt,"No sequence set!\n");
		return;
	}

	ps_printf (rps,"Sequence %s contains:-\n",current_sequence->ds_name);

	for (ptr=current_sequence->ds_data; ptr != NULL_DE; ptr=ptr->de_next, x++) {
		ps_printf (rps,"%-3d ",x);
		dn_print (rps,ptr->de_name,READOUT);
		ps_print (rps,"\n");
	}
}