X-Git-Url: https://pd.if.org/git/?p=pd_readline;a=blobdiff_plain;f=mg%2Fdir.c;fp=mg%2Fdir.c;h=235277398ad048e85129fe2ca22d042adba5ad6d;hp=0000000000000000000000000000000000000000;hb=a9843085ec916c175bd245a8398f30e6cc03f984;hpb=26fe4e09c6c3c250334fdeed60ce3061febecde2 diff --git a/mg/dir.c b/mg/dir.c new file mode 100644 index 0000000..2352773 --- /dev/null +++ b/mg/dir.c @@ -0,0 +1,77 @@ +/* $OpenBSD: dir.c,v 1.19 2008/06/13 20:07:40 kjell Exp $ */ + +/* This file is in the public domain. */ + +/* + * Name: MG 2a + * Directory management functions + * Created: Ron Flax (ron@vsedev.vse.com) + * Modified for MG 2a by Mic Kaczmarczik 03-Aug-1987 + */ + +#include "def.h" + +static char mgcwd[NFILEN]; + +/* + * Initialize anything the directory management routines need. + */ +void +dirinit(void) +{ + mgcwd[0] = '\0'; + if (getcwd(mgcwd, sizeof(mgcwd)) == NULL) { + ewprintf("Can't get current directory!"); + chdir("/"); + } + if (!(mgcwd[0] == '/' && mgcwd [1] == '\0')) + (void)strlcat(mgcwd, "/", sizeof(mgcwd)); +} + +/* + * Change current working directory. + */ +/* ARGSUSED */ +int +changedir(int f, int n) +{ + char bufc[NFILEN], *bufp; + + (void)strlcpy(bufc, mgcwd, sizeof(bufc)); + if ((bufp = eread("Change default directory: ", bufc, NFILEN, + EFDEF | EFNEW | EFCR | EFFILE)) == NULL) + return (ABORT); + else if (bufp[0] == '\0') + return (FALSE); + /* Append trailing slash */ + if (chdir(bufc) == -1) { + ewprintf("Can't change dir to %s", bufc); + return (FALSE); + } + if ((bufp = getcwd(mgcwd, sizeof(mgcwd))) == NULL) + panic("Can't get current directory!"); + if (mgcwd[strlen(mgcwd) - 1] != '/') + (void)strlcat(mgcwd, "/", sizeof(mgcwd)); + ewprintf("Current directory is now %s", bufp); + return (TRUE); +} + +/* + * Show current directory. + */ +/* ARGSUSED */ +int +showcwdir(int f, int n) +{ + ewprintf("Current directory: %s", mgcwd); + return (TRUE); +} + +int +getcwdir(char *buf, size_t len) +{ + if (strlcpy(buf, mgcwd, len) >= len) + return (FALSE); + + return (TRUE); +}