#include <hashed_db.h>
#endif
-MODULE_ID("$Id: db_iterator.c,v 1.18 2011/09/26 09:52:00 tom Exp $")
+MODULE_ID("$Id: db_iterator.c,v 1.22 2011/11/27 01:32:34 tom Exp $")
#define HaveTicDirectory _nc_globals.have_tic_directory
#define KeepTicDirectory _nc_globals.keep_tic_directory
#define TicDirectory _nc_globals.tic_directory
-
-/*
- * FIXME: need a no-leaks entrypoint.
- */
-static char *my_blob; /* string-heap for my_list[] */
-static char **my_list; /* distinct places to look for data */
-static int my_size; /* length of my_list[] */
-static time_t my_time; /* cache last updated */
-static struct {
- const char *name;
- char *value;
-} my_vars[dbdLAST];
+#define my_blob _nc_globals.dbd_blob
+#define my_list _nc_globals.dbd_list
+#define my_size _nc_globals.dbd_size
+#define my_time _nc_globals.dbd_time
+#define my_vars _nc_globals.dbd_vars
static void
add_to_blob(const char *text)
return _nc_tic_dir(envp);
}
}
- return TicDirectory;
+ return TicDirectory ? TicDirectory : TERMINFO;
}
/*
#endif
#if USE_TERMCAP
values[dbdEnvOnce2] = cache_getenv("TERMCAP", dbdEnvOnce2);
+ /* only use $TERMCAP if it is an absolute path */
+ if (values[dbdEnvOnce2] != 0
+ && *values[dbdEnvOnce2] != '/') {
+ values[dbdEnvOnce2] = 0;
+ }
values[dbdEnvList2] = cache_getenv("TERMPATH", dbdEnvList2);
#endif /* USE_TERMCAP */
}
#endif
for (k = 0; k < j; ++k) {
if (!strcmp(my_list[j], my_list[k])) {
- k = --j;
+ k = j - 1;
while ((my_list[j] = my_list[j + 1]) != 0) {
++j;
}
} else {
FreeAndNull(my_blob);
}
+ free(my_stat);
}
}
}
+
+#if NO_LEAKS
+void
+_nc_db_iterator_leaks(void)
+{
+ if (my_blob != 0)
+ FreeAndNull(my_blob);
+ if (my_list != 0)
+ FreeAndNull(my_list);
+}
+#endif