typedef enum
{
P_BOOL,P_BOOLREV,P_CHAR,P_INTEGER,P_OCTAL,
- P_STRING,P_GSTRING,P_ENUM,P_SEP
+ P_PATH,P_STRING,P_GSTRING,P_ENUM,P_SEP
} parm_type;
typedef enum
{"name", P_STRING, P_LOCAL, &sDefault.name, NULL, 0},
{"comment", P_STRING, P_LOCAL, &sDefault.comment, NULL, 0},
{"lock file", P_STRING, P_LOCAL, &sDefault.lock_file, NULL, 0},
- {"path", P_STRING, P_LOCAL, &sDefault.path, NULL, 0},
+ {"path", P_PATH, P_LOCAL, &sDefault.path, NULL, 0},
{"read only", P_BOOL, P_LOCAL, &sDefault.read_only, NULL, 0},
{"list", P_BOOL, P_LOCAL, &sDefault.list, NULL, 0},
{"use chroot", P_BOOL, P_LOCAL, &sDefault.use_chroot, NULL, 0},
i = iNumServices;
- ServicePtrs = (service **)Realloc(ServicePtrs,sizeof(service *)*num_to_alloc);
+ ServicePtrs = realloc_array(ServicePtrs, service *, num_to_alloc);
if (ServicePtrs)
- pSERVICE(iNumServices) = (service *)malloc(sizeof(service));
+ pSERVICE(iNumServices) = new(service);
if (!ServicePtrs || !pSERVICE(iNumServices))
return(-1);
*(char *)dest_ptr = *(char *)src_ptr;
break;
+ case P_PATH:
case P_STRING:
string_set(dest_ptr,*(char **)src_ptr);
break;
int parmnum, i;
void *parm_ptr=NULL; /* where we are going to store the result */
void *def_ptr=NULL;
+ char *cp;
parmnum = map_parameter(parmname);
sscanf(parmvalue,"%o",(int *)parm_ptr);
break;
+ case P_PATH:
+ string_set(parm_ptr,parmvalue);
+ if ((cp = *(char**)parm_ptr) != NULL) {
+ int len = strlen(cp);
+ while (len > 1 && cp[len-1] == '/') len--;
+ cp[len] = '\0';
+ }
+ break;
+
case P_STRING:
string_set(parm_ptr,parmvalue);
break;