Annotation of 43BSDReno/contrib/isode-beta/dsap/common/file_print.c, revision 1.1

1.1     ! root        1: #include "quipu/util.h"
        !             2: #include "quipu/attrvalue.h"
        !             3: #include "quipu/malloc.h"
        !             4: 
        !             5: char * parse_file = NULLCP;
        !             6: RDN parse_rdn = NULLRDN;
        !             7: extern LLog * log_dsap;
        !             8: extern AttributeType last_at;
        !             9: 
        !            10: #ifdef SYS5
        !            11: static char used_temp;
        !            12: #else
        !            13: /* ARGSUSED */
        !            14: #endif
        !            15: 
        !            16: int dflt_attr_file (at,x,full)
        !            17: AttributeType  at;
        !            18: AttributeValue x;
        !            19: char full;
        !            20: {
        !            21:        /* make default file name */
        !            22: char buffer [LINESIZE];
        !            23: PS sps;
        !            24: char *pathend = NULLCP;
        !            25: char val, *_isodefile();
        !            26: char *path = NULLCP;
        !            27: struct file_syntax * fs;
        !            28: unsigned last_heap;
        !            29: 
        !            30:        fs = (struct file_syntax *) x->av_struct;
        !            31: 
        !            32:        if ((parse_file != NULLCP) && ((pathend = rindex (parse_file,'/')) != NULLCP)) {
        !            33:                val = *++pathend;
        !            34:                *pathend = 0;
        !            35:                path = parse_file;
        !            36:        }
        !            37: 
        !            38:        last_heap = mem_heap;   /* put PS on general heap */
        !            39:        mem_heap = 0;
        !            40: 
        !            41:        sps = ps_alloc (str_open);
        !            42:        if (str_setup (sps,buffer,LINESIZE,1) == NOTOK) {
        !            43:                mem_heap = last_heap;
        !            44:                ps_free (sps);
        !            45:                return (NOTOK);
        !            46:        }
        !            47:        mem_heap = last_heap;
        !            48: 
        !            49:        if (parse_rdn == NULLRDN) 
        !            50:                ps_print (sps,at->oa_ot.ot_name);
        !            51:        else {
        !            52:                rdn_print (sps,parse_rdn,EDBOUT);
        !            53:                ps_printf (sps,".%s",at->oa_ot.ot_name);
        !            54:        }
        !            55:        *sps->ps_ptr = 0;
        !            56:        ps_free (sps);
        !            57: 
        !            58: 
        !            59: #ifdef SYS5
        !            60:        used_temp = FALSE;
        !            61:        if ((full) && (strlen(buffer) > MAXFILENAMELEN)) {
        !            62:                char *nptr, *mptr;
        !            63:                char nbuf [LINESIZE];
        !            64:                int i;
        !            65: 
        !            66:                nptr = buffer;
        !            67:                mptr = nbuf;            
        !            68:                used_temp = TRUE;
        !            69: 
        !            70:                for (i=0 ; (*nptr!=0) && (i < MAXFILENAMELEN-6) ; nptr++)
        !            71:                        if (isalpha(*nptr))
        !            72:                                *mptr++ = *nptr, i++;
        !            73: 
        !            74:                strcpy (mptr,"XXXXXX");
        !            75:                if (path != NULLCP)
        !            76:                        fs->fs_name = mktemp(strdup (_isodefile(path,nbuf)));
        !            77:                else
        !            78:                        fs->fs_name = mktemp(strdup (nbuf));
        !            79:                if (pathend != NULLCP)
        !            80:                        *pathend = val;
        !            81: 
        !            82:                fs->fs_mode = 0;
        !            83:                return (OK);
        !            84:        } 
        !            85: #endif
        !            86: 
        !            87:        if (path != NULLCP)
        !            88:                fs->fs_name = strdup (_isodefile(path,buffer));
        !            89:        else
        !            90:                fs->fs_name = strdup (buffer);
        !            91:        if (pathend != NULLCP)
        !            92:                *pathend = val;
        !            93: 
        !            94:        return (OK);
        !            95: }
        !            96: 
        !            97: 
        !            98: 
        !            99: fileattr_print (ps,y,format)
        !           100: PS ps;
        !           101: AttributeValue y;
        !           102: int format;
        !           103: {
        !           104: struct file_syntax * fs;
        !           105: int um;
        !           106: 
        !           107:        fs = (struct file_syntax *) y->av_struct;
        !           108: 
        !           109:        if (format != EDBOUT) 
        !           110:                AttrV_print (ps,fs->fs_attr,format);
        !           111:        else {
        !           112:                FILE * fptr;
        !           113:                PS fps;
        !           114: 
        !           115:                ps_print (ps,"{FILE}");
        !           116: 
        !           117:                if (fs->fs_name == NULLCP) {
        !           118:                        if (dflt_attr_file (last_at,y,0) == NOTOK) {
        !           119:                                LLOG (log_dsap,LLOG_EXCEPTIONS,("Could not make default attribute file"));
        !           120:                                return;
        !           121:                        }
        !           122: #ifdef SYS5
        !           123:                        if (used_temp)
        !           124:                                ps_print (ps,fs->fs_name);
        !           125: #endif
        !           126:                } else if ( ! (fs->fs_mode & FS_DEFAULT))
        !           127:                        ps_print (ps,fs->fs_name);
        !           128: 
        !           129:                if (fs->fs_attr == NULLAttrV)   /* already exists */
        !           130:                        return;
        !           131: 
        !           132:                if (fs->fs_mode & FS_CREATE)    /* already written */
        !           133:                        return; 
        !           134: 
        !           135:                um = umask (0177);
        !           136:                if ((fptr = fopen (fs->fs_name,"w")) != NULL) {
        !           137:                        (void) umask (um);
        !           138:                        if ((fps = ps_alloc (std_open)) == NULLPS) {
        !           139:                                (void) fclose (fptr);
        !           140:                                LLOG (log_dsap,LLOG_EXCEPTIONS,("Could not alloc PS file '%s'",fs->fs_name));
        !           141:                                return;
        !           142:                        }                               
        !           143:                        if ((std_setup (fps,fptr)) == NOTOK) {
        !           144:                                (void) fclose (fptr);
        !           145:                                ps_free (fps);
        !           146:                                LLOG (log_dsap,LLOG_EXCEPTIONS,("Could not open PS file '%s'",fs->fs_name));
        !           147:                                return;
        !           148:                        }
        !           149:                } else {
        !           150:                        (void) umask (um);
        !           151:                        LLOG ( log_dsap,LLOG_EXCEPTIONS,("Could not open attribute file '%s'",fs->fs_name));
        !           152:                        return;
        !           153:                }
        !           154:                AttrV_print (fps,fs->fs_attr,FILEOUT);
        !           155:                AttrV_free (fs->fs_attr);
        !           156:                fs->fs_attr = NULLAttrV;
        !           157:                (void) fclose (fptr);
        !           158:                ps_free (fps);
        !           159:                fs->fs_mode |= FS_CREATE;
        !           160: 
        !           161:                DLOG (log_dsap,LLOG_DEBUG,("Written photo file '%s'",fs->fs_name));
        !           162:        }
        !           163:        return;
        !           164: 
        !           165: }
        !           166: 
        !           167: 

unix.superglobalmegacorp.com

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