ngspice/src/frontend/com_chdir.c

68 lines
1.1 KiB
C
Raw Normal View History

/*************
* com_chdir.c
************/
#include "ngspice/ngspice.h"
#include "ngspice/wordlist.h"
#ifdef HAVE_PWD_H
#include <pwd.h>
#endif
#include "com_chdir.h"
#include "quote.h"
#include "ngspice/cpextern.h"
void
com_chdir(wordlist *wl)
{
char *s;
2007-10-18 21:34:30 +02:00
#ifdef HAVE_PWD_H
struct passwd *pw;
2007-10-18 21:34:30 +02:00
#endif
2008-01-02 19:34:03 +01:00
#ifdef HAVE_GETCWD
char localbuf[257];
2008-01-02 19:34:03 +01:00
#endif
int copied = 0;
s = NULL;
if (wl == NULL) {
s = getenv("HOME");
#ifdef HAVE_PWD_H
if (s == NULL) {
pw = getpwuid(getuid());
if (pw == NULL) {
fprintf(cp_err, "Can't get your password entry\n");
return;
}
s = pw->pw_dir;
}
#endif
} else {
s = cp_unquote(wl->wl_word);
copied = 1;
}
if (s != NULL)
2008-01-02 19:34:03 +01:00
if (chdir(s) == -1)
perror(s);
if (copied)
tfree(s);
#ifdef HAVE_GETCWD
s = getcwd(localbuf, sizeof(localbuf));
if (s)
printf("Current directory: %s\n", s);
else
fprintf(cp_err, "Can't get current working directory.\n");
#endif
}