1 /* $OpenBSD: dir.c,v 1.19 2008/06/13 20:07:40 kjell Exp $ */
3 /* This file is in the public domain. */
7 * Directory management functions
8 * Created: Ron Flax (ron@vsedev.vse.com)
9 * Modified for MG 2a by Mic Kaczmarczik 03-Aug-1987
14 static char mgcwd[NFILEN];
17 * Initialize anything the directory management routines need.
23 if (getcwd(mgcwd, sizeof(mgcwd)) == NULL) {
24 ewprintf("Can't get current directory!");
27 if (!(mgcwd[0] == '/' && mgcwd [1] == '\0'))
28 (void)strlcat(mgcwd, "/", sizeof(mgcwd));
32 * Change current working directory.
36 changedir(int f, int n)
38 char bufc[NFILEN], *bufp;
40 (void)strlcpy(bufc, mgcwd, sizeof(bufc));
41 if ((bufp = eread("Change default directory: ", bufc, NFILEN,
42 EFDEF | EFNEW | EFCR | EFFILE)) == NULL)
44 else if (bufp[0] == '\0')
46 /* Append trailing slash */
47 if (chdir(bufc) == -1) {
48 ewprintf("Can't change dir to %s", bufc);
51 if ((bufp = getcwd(mgcwd, sizeof(mgcwd))) == NULL)
52 panic("Can't get current directory!");
53 if (mgcwd[strlen(mgcwd) - 1] != '/')
54 (void)strlcat(mgcwd, "/", sizeof(mgcwd));
55 ewprintf("Current directory is now %s", bufp);
60 * Show current directory.
64 showcwdir(int f, int n)
66 ewprintf("Current directory: %s", mgcwd);
71 getcwdir(char *buf, size_t len)
73 if (strlcpy(buf, mgcwd, len) >= len)