-/* Find a service by name. Otherwise works like get_service. */
-static int getservicebyname(char *name, service *pserviceDest)
-{
- int i;
-
- for (i = iNumServices - 1; i >= 0; i--) {
- if (strwicmp(iSERVICE(i).name, name) == 0) {
- if (pserviceDest != NULL)
- copy_service(pserviceDest, pSERVICE(i));
- break;
- }
- }
-
- return i;
-}
-
-/* Copy a service structure to another. */
-static void copy_service(service *pserviceDest, service *pserviceSource)
-{
- int i;
-
- for (i = 0; parm_table[i].label; i++) {
- if (parm_table[i].ptr && parm_table[i].class == P_LOCAL) {
- void *def_ptr = parm_table[i].ptr;
- void *src_ptr = ((char *)pserviceSource) + PTR_DIFF(def_ptr, &sDefault);
- void *dest_ptr = ((char *)pserviceDest) + PTR_DIFF(def_ptr, &sDefault);
-
- switch (parm_table[i].type) {
- case P_BOOL:
- case P_BOOLREV:
- *(BOOL *)dest_ptr = *(BOOL *)src_ptr;
- break;
-
- case P_INTEGER:
- case P_ENUM:
- case P_OCTAL:
- *(int *)dest_ptr = *(int *)src_ptr;
- break;
-
- case P_CHAR:
- *(char *)dest_ptr = *(char *)src_ptr;
- break;
-
- case P_PATH:
- case P_STRING:
- string_set(dest_ptr, *(char **)src_ptr);
- break;
-
- default:
- break;
- }
- }
- }
-}
-