Annotation of 43BSD/usr.lib/libI77/wsnmle.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1980 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  *
                      6:  *     @(#)wsnmle.c    5.2     8/2/85
                      7:  */
                      8: 
                      9: /*
                     10:  *             name-list write
                     11:  */
                     12: 
                     13: #include "fio.h"
                     14: #include "lio.h"
                     15: #include "nmlio.h"
                     16: #include <strings.h>
                     17: 
                     18: int l_write(), t_putc();
                     19: LOCAL char nml_wrt[] = "namelist write";
                     20: char namelistkey_ = '&';
                     21: 
                     22: s_wsne(a) namelist_arglist *a;
                     23: {
                     24:        int n, first;
                     25:        struct namelistentry *entries;
                     26:        int *dimptr, *spans, ndim, nelem, offset, vlen, vtype, number;
                     27:        char *nmlist_nm, *cptr;
                     28: 
                     29:        nmlist_nm = a->namelist->namelistname;
                     30:        reading = NO;
                     31:        formatted = NAMELIST;
                     32:        fmtbuf = "ext namelist io";
                     33:        if(n=c_le(a,WRITE)) return(n);
                     34:        putn = t_putc;
                     35:        line_len = LINE-1;      /* so we can always add a comma */
                     36:        curunit->uend = NO;
                     37:        leof = NO;
                     38:        if(!curunit->uwrt && ! nowwriting(curunit)) err(errflag, errno, nml_wrt)
                     39: 
                     40:        /* begin line with " &namelistname " */
                     41:        if(recpos != 0)
                     42:                PUT('\n');  /* PUT() adds blank */
                     43:        PUT(namelistkey_);
                     44:        while(*nmlist_nm != '\0') PUT(*nmlist_nm++);
                     45:        PUT(' ');
                     46: 
                     47:        /* now loop through entries writing them out */
                     48:        entries = a->namelist->names;
                     49:        first = 1;
                     50:        while( entries->varname[0] != 0 )
                     51:        {
                     52:                /* write out variable name and '=' */
                     53:                cptr = entries->varname;
                     54:                chk_len( strlen(cptr) + 3);
                     55:                if(first++ != 1) PUT(',');
                     56:                PUT(' ');
                     57:                while( *cptr != '\0') PUT(*cptr++);
                     58:                PUT('=');
                     59: 
                     60:                /* how many value are there? */
                     61:                if( (dimptr = entries->dimp) == NULL ) number = 1;
                     62:                else number = dimptr[1];
                     63:                /* what is element length? */
                     64:                vlen = entries->typelen;
                     65:                /* get type */
                     66:                vtype = entries->type;
                     67:                
                     68:                if(n=l_write( &number, entries->varaddr, vlen, vtype ))
                     69:                                err(errflag,n,nml_wrt);
                     70:                entries++;
                     71:        }
                     72:        PUT('\n');
                     73:        PUT(namelistkey_);
                     74:        cptr = "end\n";
                     75:        while(*cptr != '\0') PUT(*cptr++);
                     76:        return(OK);
                     77: }
                     78: 
                     79: LOCAL
                     80: t_putc(c) char c;
                     81: {
                     82:        if(c=='\n') { 
                     83:                recpos=0;
                     84:        } else if(recpos == 0) {
                     85:                putc(' ',cf);           /* for namelist,           */
                     86:                recpos = 2;             /* never print in column 1 */
                     87:        } else {
                     88:                recpos++;
                     89:        }
                     90:        putc(c,cf);
                     91:        return(OK);
                     92: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.