126 lines
3.2 KiB
C
126 lines
3.2 KiB
C
|
/*
|
||
|
* Copyright (c) 1992, 1993 by the University of Southern California
|
||
|
*
|
||
|
* For copying and distribution information, please see the file <usc-copyr.h>
|
||
|
*/
|
||
|
|
||
|
/* This file will probably go away after we define REALLY_NEW_FIELD
|
||
|
*/
|
||
|
#include <usc-copyr.h>
|
||
|
|
||
|
/* Written by swa@ISI.EDU, Sept. 21--24, 1992 */
|
||
|
|
||
|
#include <pfs.h>
|
||
|
#include <pprot.h>
|
||
|
#include <pparse.h>
|
||
|
|
||
|
static struct atr_type_by_field_name {
|
||
|
char *name;
|
||
|
char type;
|
||
|
} atr_type_by_field_name[] = {
|
||
|
/* Not all fields are defined here yet. */
|
||
|
"ACCESS-METHOD", ATR_SEQUENCE,
|
||
|
"BASE-TYPE", ATR_SEQUENCE,
|
||
|
"CLOSURE", ATR_LINK,
|
||
|
"DEST-EXP", ATR_SEQUENCE,
|
||
|
"FILTER", ATR_FILTER,
|
||
|
"HOST", ATR_SEQUENCE,
|
||
|
"HOST-TYPE", ATR_SEQUENCE,
|
||
|
"HSONAME", ATR_SEQUENCE,
|
||
|
"HSONAME-TYPE", ATR_SEQUENCE,
|
||
|
"ID", ATR_SEQUENCE,
|
||
|
"LINK-TYPE", ATR_SEQUENCE,
|
||
|
"NAME-COMPONENT", ATR_SEQUENCE,
|
||
|
"OWNER", ATR_SEQUENCE,
|
||
|
"TARGET", ATR_SEQUENCE,
|
||
|
"TTL", ATR_SEQUENCE,
|
||
|
"VERSION", ATR_SEQUENCE,
|
||
|
NULL, ATR_UNKNOWN
|
||
|
};
|
||
|
|
||
|
|
||
|
static struct atr_type_by_type_name {
|
||
|
char *name;
|
||
|
char type;
|
||
|
} atr_type_by_type_name[] = {
|
||
|
"FILTER", ATR_FILTER,
|
||
|
"LINK", ATR_LINK,
|
||
|
"SEQUENCE", ATR_SEQUENCE,
|
||
|
"ASCII", ATR_SEQUENCE, /* XXX Backwards compatability; will go away
|
||
|
soon. */
|
||
|
NULL, ATR_UNKNOWN
|
||
|
};
|
||
|
|
||
|
/* used by atr_in. */
|
||
|
int
|
||
|
lookup_avtype_by_field_name(const char aname[])
|
||
|
{
|
||
|
struct atr_type_by_field_name *p;
|
||
|
for (p = atr_type_by_field_name; p->name; ++p)
|
||
|
if (strequal(p->name, aname))
|
||
|
return p->type;
|
||
|
return ATR_UNKNOWN;
|
||
|
}
|
||
|
|
||
|
/* If you add elements to this table, you will also need to change pfs.h */
|
||
|
|
||
|
|
||
|
int
|
||
|
lookup_avtype_by_avtypename(const char t_avtype[])
|
||
|
{
|
||
|
struct atr_type_by_type_name *p;
|
||
|
for (p = atr_type_by_type_name; p->name; ++p)
|
||
|
if (strequal(p->name, t_avtype))
|
||
|
return p->type;
|
||
|
return ATR_UNKNOWN;
|
||
|
}
|
||
|
|
||
|
|
||
|
char *
|
||
|
lookup_avtypename_by_avtype(int avtype)
|
||
|
{
|
||
|
struct atr_type_by_type_name *p;
|
||
|
for (p = atr_type_by_type_name; p->name; ++p)
|
||
|
if (p->type == avtype)
|
||
|
return p->name;
|
||
|
return "UNKNOWN-TYPE-NAME-PLEASE-COMPLAIN-TO-THE-MAINTAINER";
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/* If you add elements to this table, you will also need to change pfs.h */
|
||
|
|
||
|
static struct aban {
|
||
|
char *name;
|
||
|
char precedence;
|
||
|
} precedence_by_precedencename[] = {
|
||
|
"OBJECT", ATR_PREC_OBJECT,
|
||
|
"LINK", ATR_PREC_LINK,
|
||
|
"CACHED", ATR_PREC_CACHED,
|
||
|
"REPLACEMENT", ATR_PREC_REPLACE,
|
||
|
"ADDITIONAL", ATR_PREC_ADD,
|
||
|
NULL, ATR_PREC_UNKNOWN
|
||
|
};
|
||
|
|
||
|
int
|
||
|
lookup_precedence_by_precedencename(const char t_precedence[])
|
||
|
{
|
||
|
struct aban *p;
|
||
|
for (p = precedence_by_precedencename; p->name; ++p)
|
||
|
if (strequal(p->name, t_precedence))
|
||
|
return p->precedence;
|
||
|
return ATR_UNKNOWN;
|
||
|
}
|
||
|
|
||
|
|
||
|
char *
|
||
|
lookup_precedencename_by_precedence(int precedence)
|
||
|
{
|
||
|
struct aban *p;
|
||
|
for (p = precedence_by_precedencename; p->name; ++p)
|
||
|
if (p->precedence == precedence)
|
||
|
return p->name;
|
||
|
return "UNKNOWN-APPLIES-TO-VALUE-PLEASE-COMPLAIN-TO-THE-MAINTAINER";
|
||
|
}
|