/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1998,2000 *
+ * Author: Thomas E. Dickey *
****************************************************************************/
/*
#include <curses.priv.h>
#include <tic.h>
-MODULE_ID("$Id: home_terminfo.c,v 1.3 2000/10/04 02:31:53 tom Exp $");
-
-#define my_length (strlen(home) + sizeof(PRIVATE_INFO))
+MODULE_ID("$Id: home_terminfo.c,v 1.11 2008/08/03 23:43:11 tom Exp $")
/* ncurses extension...fall back on user's private directory */
-char *
+#define MyBuffer _nc_globals.home_terminfo
+
+NCURSES_EXPORT(char *)
_nc_home_terminfo(void)
{
+ char *result = 0;
+#if USE_HOME_TERMINFO
char *home;
- static char *temp = 0;
if (use_terminfo_vars()) {
- if (temp == 0) {
- if ((home = getenv("HOME")) != 0
- && my_length <= PATH_MAX) {
- temp = typeMalloc(char, my_length);
- if (temp == 0)
- _nc_err_abort("Out of memory");
- (void) sprintf(temp, PRIVATE_INFO, home);
+ if (MyBuffer == 0) {
+ if ((home = getenv("HOME")) != 0) {
+ unsigned want = (strlen(home) + sizeof(PRIVATE_INFO));
+ MyBuffer = typeMalloc(char, want);
+ if (MyBuffer == 0)
+ _nc_err_abort(MSG_NO_MEMORY);
+ (void) sprintf(MyBuffer, PRIVATE_INFO, home);
}
}
- return temp;
+ result = MyBuffer;
}
- return 0;
+#endif
+ return result;
}