Annotation of researchv9/jerq/sgs/libsdp/vacate.c, revision 1.1.1.1

1.1       root        1: static char ID[] = "@(#) vacate.c: 1.1 3/16/82";
                      2: #include <stdio.h>
                      3: #include "sdp.h"
                      4: #include "define3.h"
                      5: 
                      6: #ifdef SHORT
                      7: #define VA01   "VA01 "
                      8: #define VA02   "VA02 "
                      9: #define VAAU   "VAAU "
                     10: #else
                     11: #define VA01   "VA01 -- attempt to vacate a connected environment\n%o\n",environ
                     12: #define VA02   "VA02 -- attempt to vacate unhoused environment\n%o\n",environ
                     13: #define VAAU   "%s","VAAU -- audit failed in sdp_vacate\n"
                     14: #endif
                     15: 
                     16: #ifdef SWEET
                     17: #define PROLOG
                     18: #define EPILOG
                     19: #else
                     20: #define PROLOG         if( (aud_flag == AUDITON) && (aud_check() == ERROR) )\
                     21:                                ERR_RET(VAAU,ERROR)
                     22: #define EPILOG         if(aud_flag == AUDITON)\
                     23:                                aud_set() ;\
                     24:                        if(hist_fp != NULL)\
                     25:                                fprintf(hist_fp,"VA\t%o\n",environ) ;
                     26: #endif
                     27: 
                     28: extern int aud_flag ;
                     29: extern struct ENVIRON *first_environ ;
                     30: extern struct LIBFILE *Glib_file ;
                     31: extern struct LIBMEM *Glib_mem ;
                     32: extern FILE *hist_fp ;
                     33: 
                     34: extern int aud_check() ;
                     35: extern aud_set() ;
                     36: extern FATAL() ;
                     37: 
                     38: int                                    /* SUCCESS or ERROR */
                     39: sdp_vacate(environ)
                     40: struct ENVIRON *environ ;
                     41: {
                     42:        register struct MANAGER *manager ;
                     43:        register int            j ;
                     44:        register struct ENVIRON *curr ;
                     45:        register struct ENVIRON *next ;
                     46:        register struct ENVIRON *prev ;
                     47: 
                     48:        PROLOG
                     49: 
                     50:        prev = NULL ;
                     51:        for(curr=first_environ; curr!=NULL; curr=next)
                     52:        {
                     53:                next = curr->next_environ ;
                     54:                if( (curr==environ) || (environ==NULL) )
                     55:                {
                     56:                        if(curr->cnct_count != 0)
                     57:                                ERR_RET(VA01,ERROR)
                     58: 
                     59:                        Glib_mem = curr->lib_mem ;
                     60: 
                     61:                        if(prev == NULL)
                     62:                                first_environ = next ;
                     63:                        else
                     64:                                prev->next_environ = next ;
                     65: 
                     66:                        manager = curr->manp ;
                     67:                        for(j=0; j<curr->num_frames; j++)
                     68:                        {
                     69:                                MFREE(manager[j].frame_pntr) ;
                     70:                                manager[j].frame_pntr = NULL ;
                     71:                        }
                     72:                        MFREE(curr->manp) ;
                     73:                        curr->manp = NULL ;
                     74:                        MFREE(curr) ;
                     75:                        if(environ == curr)
                     76:                                break ;
                     77:                }
                     78:                else
                     79:                        prev = curr ;
                     80:        }
                     81: 
                     82:        if( (curr==NULL) && (environ!=NULL) )
                     83:                ERR_RET(VA02,ERROR)
                     84: 
                     85:        EPILOG
                     86:        return(SUCCESS) ;
                     87: }

unix.superglobalmegacorp.com

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