static_fn int sh_outenum(Shell_t *shp, Sfio_t *iop, Namval_t *tp) { Namval_t *mp; Dt_t *dp = NULL; struct Enum *ep; int i; if (!tp) { mp = nv_open(NV_CLASS, shp->var_tree, NV_NOADD | NV_VARNAME); if (!mp) return 0; dp = nv_dict(mp); tp = (Namval_t *)dtfirst(dp); } while (tp) { if (!tp->nvfun) continue; ep = (struct Enum *)nv_hasdisc(tp, &ENUM_disc); if (!ep) continue; sfprintf(iop, "enum %s%s=(\n", (ep->iflag ? "-i " : ""), tp->nvname); for (i = 0; i < ep->nelem; i++) sfprintf(iop, "\t%s\n", ep->values[i]); sfprintf(iop, ")\n"); if (!dp) break; tp = (Namval_t *)dtnext(dp, tp); } return 0; }
static int sh_outenum(Shell_t *shp, Sfio_t *iop, Namval_t *tp) { Namval_t *mp; Dt_t *dp=0; char nvtype[sizeof(NV_CLASS)]; struct Enum *ep; int i; if(!tp) { strcpy(nvtype,NV_CLASS); if(!(mp = nv_open(nvtype, shp->var_tree,NV_NOADD|NV_VARNAME))) return(0); dp = nv_dict(mp); tp = (Namval_t*)dtfirst(dp); } while(tp) { if(!tp->nvfun || !(ep=(struct Enum *)nv_hasdisc(tp,&ENUM_disc))) continue; sfprintf(iop,"enum %s%s=(\n",(ep->iflag?"-i ":""),tp->nvname); for(i=0; i <ep->nelem ; i++) sfprintf(iop,"\t%s\n",ep->values[i]); sfprintf(iop,")\n"); if(!dp) break; tp = (Namval_t*)dtnext(dp,tp); } return(0); }