|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T f
Length: 1788 (0x6fc)
Types: TextFile
Names: »file_enc.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z«
└─⟦de7628f85⟧
└─⟦this⟧ »isode-6.0/dsap/common/file_enc.c«
#include "quipu/util.h"
#include "quipu/attrvalue.h"
extern LLog * log_dsap;
PE grab_filepe (av)
AttributeValue av;
{
FILE * fptr;
struct file_syntax * fs;
sntx_table *tbl, * get_syntax_table();
PE ret_pe, grab_pe();
fs = (struct file_syntax *) av->av_struct;
if (fs->fs_attr != NULLAttrV)
return (grab_pe (fs->fs_attr));
if (fs->fs_name == NULLCP)
return (NULLPE); /* should never happen */
if ((fptr = fopen (fs->fs_name,"r")) != NULL) {
tbl = get_syntax_table (fs->fs_real_syntax);
if (tbl->s_parse == NULLIFP) { /* treat as pure asn */
PS fps;
fps = ps_alloc (std_open);
if ((std_setup (fps,fptr)) == NOTOK) {
(void) fclose (fptr);
ps_free (fps);
return (NULLPE);
}
if ((ret_pe = ps2pe (fps)) == NULLPE)
LLOG (log_dsap,LLOG_EXCEPTIONS,("invalid ASN if file %s",fs->fs_name));
(void) fclose (fptr);
ps_free (fps);
} else {
char buffer [LINESIZE];
AttributeValue newav;
extern char * TidyString ();
(void) fread (buffer,LINESIZE,1,fptr);
(void) fclose (fptr);
if ((newav = str2AttrV (TidyString(buffer),fs->fs_real_syntax)) == NULLAttrV){
LLOG (log_dsap,LLOG_EXCEPTIONS,("invalid format in file %s",fs->fs_name));
}
ret_pe = grab_pe (newav);
AttrV_free (newav);
}
} else {
LLOG(log_dsap,LLOG_EXCEPTIONS,("Can't open %s",fs->fs_name));
return (NULLPE);
}
return (ret_pe);
}
file_decode (x)
AttributeValue x;
{
struct file_syntax * fs;
fs = (struct file_syntax *) smalloc (sizeof(struct file_syntax));
fs->fs_ref = 1;
fs->fs_real_syntax = x->av_syntax - AV_WRITE_FILE;
fs->fs_name = NULLCP;
fs->fs_attr = AttrV_alloc ();
fs->fs_attr->av_syntax = x->av_syntax - AV_WRITE_FILE;
fs->fs_attr->av_struct = x->av_struct;
x->av_syntax = AV_FILE;
x->av_struct = (caddr_t)fs;
}