int main(void) {
char buf[256];
- if (getcwd(buf, sizeof(buf)) >= 0)
+ if (getcwd(buf, sizeof(buf)))
printf("%s\n", buf);
else {
fprintf(stderr, "pwd: error\n");
fprintf(stderr, "cd: %s: No such file or directory\n", dir);
else {
char cwd[256];
- if (getcwd(cwd, sizeof(cwd)) >= 0)
+ if (getcwd(cwd, sizeof(cwd)))
var_set("PWD", cwd, 1);
}
goto restore_redir;
if (strcmp(argv[0], "pwd") == 0) {
char cwd[256];
- if (getcwd(cwd, sizeof(cwd)) >= 0)
+ if (getcwd(cwd, sizeof(cwd)))
printf("%s\n", cwd);
else
fprintf(stderr, "pwd: error\n");
if (!user) user = "root";
if (!host) host = "adros";
- if (getcwd(cwd, sizeof(cwd)) < 0) strcpy(cwd, "?");
+ if (!getcwd(cwd, sizeof(cwd))) strcpy(cwd, "?");
printf("%s@%s:%s$ ", user, host, cwd);
fflush(stdout);
int getpid(void);
int getppid(void);
int chdir(const char* path);
-int getcwd(char* buf, size_t size);
+char* getcwd(char* buf, size_t size);
int mkdir(const char* path, ...); /* mode_t optional in AdrOS */
int unlink(const char* path);
int rmdir(const char* path);
int tpos = 0;
if (path[0] != '/') {
- if (getcwd(tmp, sizeof(tmp)) < 0) return (void*)0;
+ if (!getcwd(tmp, sizeof(tmp))) return (void*)0;
tpos = (int)strlen(tmp);
if (tpos > 0 && tmp[tpos - 1] != '/') tmp[tpos++] = '/';
}
return __syscall_ret(_syscall1(SYS_CHDIR, (int)path));
}
-int getcwd(char* buf, size_t size) {
- return __syscall_ret(_syscall2(SYS_GETCWD, (int)buf, (int)size));
+char* getcwd(char* buf, size_t size) {
+ int r = _syscall2(SYS_GETCWD, (int)buf, (int)size);
+ if (r < 0) { errno = -r; return NULL; }
+ return buf;
}
int mkdir(const char* path, ...) {