diff options
author | Arthur de Jong <arthur@arthurdejong.org> | 2006-11-17 22:55:51 +0000 |
---|---|---|
committer | Arthur de Jong <arthur@arthurdejong.org> | 2006-11-17 22:55:51 +0000 |
commit | e2e2a4e5eb7ed84e66f7f027fdb01cffeaf9b9f1 (patch) | |
tree | bf2b74e68ea640ee663503b97202c8b7f2fa0164 /nss/automount.c | |
parent | ac028b7925b99391167ad96f288fe46c05c961c1 (diff) |
do some refactoring in the generated code and add some documentation on generated code in comments in common.h
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/libnss_ldapd@96 ef36b2f9-881f-0410-afb5-c4e39611909c
Diffstat (limited to 'nss/automount.c')
-rw-r--r-- | nss/automount.c | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/nss/automount.c b/nss/automount.c index d160e11..1297330 100644 --- a/nss/automount.c +++ b/nss/automount.c @@ -45,6 +45,18 @@ struct automount_context int32_t magic; /* for sanity checks */ }; +static enum nss_status read_automount( + FILE *fp,const char **canon_key,const char **value, + char *buffer,size_t buflen,int *errnop) +{ + int32_t tmpint32; + size_t bufptr=0; + /* auto-genereted read code */ + LDF_AUTOMOUNT; + /* we're done */ + return NSS_STATUS_SUCCESS; +} + /* this function initiates a structure for doing queries using getautomountbyname() and getautomountent() */ enum nss_status _nss_ldap_setautomntent( @@ -78,8 +90,8 @@ enum nss_status _nss_ldap_getautomntbyname_r( { struct automount_context *context; FILE *fp; - size_t bufptr=0; int32_t tmpint32; + enum nss_status retv; /* check context */ context=(struct automount_context *)private; if ((context==NULL)||(context->magic!=AUTOMOUNT_CONTEXT_MAGIC)) @@ -94,43 +106,47 @@ enum nss_status _nss_ldap_getautomntbyname_r( READ_RESPONSEHEADER(fp,NSLCD_ACTION_AUTOMOUNT_BYNAME); /* read response */ READ_RESPONSE_CODE(fp); - LDF_AUTOMOUNT; + retv=read_automount(fp,canon_key,value,buffer,buflen,errnop); + if (retv!=NSS_STATUS_SUCCESS) + return retv; /* close socket and we're done */ fclose(fp); return NSS_STATUS_SUCCESS; } -#define fp (context->fp) - enum nss_status _nss_ldap_getautomntent_r( void *private,const char **canon_key,const char **value, char *buffer,size_t buflen,int *errnop) { struct automount_context *context; int32_t tmpint32; - size_t bufptr=0; + enum nss_status retv; /* check context */ context=(struct automount_context *)private; if ((context==NULL)||(context->magic!=AUTOMOUNT_CONTEXT_MAGIC)) return NSS_STATUS_UNAVAIL; /* if we don't have a file descriptor, begin a request now */ - if (fp==NULL) + if (context->fp==NULL) { /* open a new stream and write the request */ - OPEN_SOCK(fp); - WRITE_REQUEST(fp,NSLCD_ACTION_AUTOMOUNT_ALL); - WRITE_FLUSH(fp); + OPEN_SOCK(context->fp); + WRITE_REQUEST(context->fp,NSLCD_ACTION_AUTOMOUNT_ALL); + WRITE_FLUSH(context->fp); /* read response header */ - READ_RESPONSEHEADER(fp,NSLCD_ACTION_AUTOMOUNT_ALL); + READ_RESPONSEHEADER(context->fp,NSLCD_ACTION_AUTOMOUNT_ALL); } /* read a response */ - READ_RESPONSE_CODE(fp); - LDF_AUTOMOUNT; + READ_RESPONSE_CODE(context->fp); + retv=read_automount(context->fp,canon_key,value,buffer,buflen,errnop); + if (retv!=NSS_STATUS_SUCCESS) + { + /* remove reference to fp from context */ + context->fp=NULL; + return retv; + } return NSS_STATUS_SUCCESS; } -#undef fp - enum nss_status _nss_ldap_endautomntent(void **private) { struct automount_context *context; |