devtabent
extern struct devtabent *_getdevtabent __P((void));
extern void _freedevtabent __P((struct devtabent *ent));
extern struct devtabent *_getdevrec __P((char *device));
extern int _putdevtabrec __P((FILE *stream, struct devtabent *rec));
struct devtabent *record; /* Retrieved record */
struct devtabent *
struct devtabent *ent; /* Ptr to dev table entry structure */
if (!(ent = malloc(sizeof (struct devtabent)))) {
_freedevtabent(struct devtabent *ent)
struct devtabent *
struct devtabent *devrec; /* Pointer to current record */
static int matchallcriteria(struct devtabent *, struct srch *);
static int matchanycriteria(struct devtabent *, struct srch *);
struct devtabent *devtabent; /* Ptr to current record */
while (notdone && (devtabent = _getdevtabent())) {
if (!devtabent->comment) {
if (!criteria || matchallcriteria(devtabent, criteria)) {
if (alias = malloc(strlen(devtabent->alias)+1))
(void) strcpy(alias, devtabent->alias);
_freedevtabent(devtabent);
while (notdone && (devtabent = _getdevtabent())) {
if (!devtabent->comment) {
if (!criteria || matchanycriteria(devtabent, criteria)) {
if (alias = malloc(strlen(devtabent->alias)+1))
(void) strcpy(alias, devtabent->alias);
_freedevtabent(devtabent);
struct devtabent *ent, /* Entry to check */
struct devtabent *ent, /* Entry to check */
struct devtabent *devtabent; /* Ptr to devtab entry */
if (devtabent = _getdevrec(device)) {
if (devtabent->alias) n++; /* Alias, if defined */
if (devtabent->cdevice) n++; /* Char spcl, if defined */
if (devtabent->bdevice) n++; /* Blk spcl, if defined */
if (devtabent->pathname) n++; /* Pathname, if defined */
if ((attrval = devtabent->attrlist) != NULL) {
if (devtabent->alias) {
if (noerror && devtabent->bdevice) {
if (noerror && devtabent->cdevice) {
if (noerror && devtabent->pathname) {
if (noerror && (attrval = devtabent->attrlist)) {
struct devtabent *rment;
struct devtabent *devtabent;
while (((devtabent = _getdevtabent()) != NULL) && noerr) {
if (devtabent->entryno != rment->entryno)
noerr = _putdevtabrec(fd, devtabent) != EOF;
_freedevtabent(devtabent);
static struct devtabent *mkdevtabent(char *, char **);
struct devtabent *modent; /* Entry being modified */
struct devtabent *devtabent; /* Entry being copied */
while (((devtabent = _getdevtabent()) != NULL) &&
if (devtabent->entryno != modent->entryno)
nobaderr = _putdevtabrec(fd, devtabent) != EOF;
_freedevtabent(devtabent);
static struct devtabent *
struct devtabent *devtabent; /* * to struct we're making */
if (devtabent = malloc(sizeof (struct devtabent))) {
if (devtabent->alias = malloc(strlen(alias)+1)) {
(void) strcpy(devtabent->alias, alias); /* alias */
devtabent->comment = FALSE; /* data rec */
devtabent->cdevice = NULL; /* cdevice */
devtabent->bdevice = NULL; /* bdevice */
devtabent->pathname = NULL; /* pathname */
devtabent->attrstr = NULL; /* string */
devtabent->attrlist = NULL; /* attr list */
if (!devtabent->cdevice) {
devtabent->cdevice = val;
if (!devtabent->bdevice) {
devtabent->bdevice = val;
if (!devtabent->pathname) {
devtabent->pathname = val;
if ((attrval = devtabent->attrlist) != NULL)
else devtabent->attrlist = attrval;
_freedevtabent(devtabent);
devtabent = NULL;
free(devtabent);
devtabent = NULL;
return (devtabent);
struct devtabent *rec) /* Record to write */
struct devtabent *devtabent; /* Ptr to dev tab entry */
if (devtabent = _getdevrec(alias)) {
_freedevtabent(devtabent); /* Free device table info */
if (devtabent = mkdevtabent(alias, attrval)) {
noerr = (_putdevtabrec(oam_devtab, devtabent) != EOF);
_freedevtabent(devtabent);
struct devtabent *ent; /* Device's current description */
struct devtabent *chg; /* Changes to make to description */
struct devtabent *_getdevtabent(void);
void _freedevtabent(struct devtabent *);
struct devtabent *_getdevrec(char *);
extern int _putdevtabrec(FILE *stream, struct devtabent *rec);