summaryrefslogtreecommitdiffstats
path: root/src/generic.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/generic.c')
-rw-r--r--src/generic.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/generic.c b/src/generic.c
index 44795a6..13df056 100644
--- a/src/generic.c
+++ b/src/generic.c
@@ -16,7 +16,7 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#ident "$Id: generic.c,v 1.4 2002/11/19 01:01:49 nalin Exp $"
+#ident "$Id: generic.c,v 1.5 2003/10/23 01:44:42 nalin Exp $"
#include "../config.h"
@@ -39,6 +39,8 @@
/* Array of file name patterns we ignore. */
static const char *skip_names[] = {
+ ".*",
+ "*#",
"*~",
"*.rpmsave",
"*.rpmorig",
@@ -67,7 +69,7 @@ read_line(FILE *fp)
buflen = CHUNK_SIZE;
length = 0;
- buffer = malloc(CHUNK_SIZE);
+ buffer = malloc(buflen);
if (buffer == NULL) {
return NULL;
}
@@ -88,8 +90,9 @@ read_line(FILE *fp)
}
}
}
+ length = strlen(buffer);
- if (strlen(buffer) == 0) {
+ if (length == 0) {
free(buffer);
return NULL;
}
@@ -162,8 +165,10 @@ getgen(struct STRUCTURE *result,
errno = ERANGE;
return NSS_STATUS_TRYAGAIN;
}
+ /* Save it. */
+ strcpy(buffer, line);
/* If we had trouble parsing it, continue. */
- switch (parse_line(line, &structure,
+ switch (parse_line(buffer, &structure,
(void *)buffer, buflen,
errnop)) {
case 0:
@@ -245,7 +250,7 @@ getnam(const char *name,
static int
compare_number(const void *compare_data, struct STRUCTURE *structure)
{
- return (structure->getnum_field != (getnum_type) compare_data);
+ return (structure->getnum_field != (getnum_type) (long) compare_data);
}
enum nss_status
getnum(getnum_type number,
@@ -259,7 +264,7 @@ getnum(getnum_type number,
EXTRA_CRITERIA_NAMES,
#endif
buffer, buflen, errnop,
- compare_number, (const void*) number);
+ compare_number, (const void*) (long) number);
}
#endif
#if defined(setent) && defined(getent) && defined(endent)