FENIX_coreutils/dirname.c

52 lines
817 B
C
Raw Normal View History

#define _POSIX_C_SOURCE 200809L
#include <stdio.h>
#include <string.h>
int main(int argc, char ** argv) {
int i, last_slash = -1, length;
if(argc == 1) {
printf("/\n");
return 0;
}
if(strcmp(argv[1], "//") == 0) {
printf("/\n");
return 0;
}
length = strlen(argv[1]);
if(argv[1][length - 1] == '/') {
argv[1][length - 1] = '\0';
}
for(i = 0; i < length; i++) {
if(argv[1][i] == '/') {
last_slash = i;
}
}
if(last_slash == -1) {
printf(".\n");
return 0;
}
argv[1][last_slash] = '\0';
if(strcmp(argv[1], "//") == 0 || strcmp(argv[1], "") == 0 ||
strcmp(argv[1], "/") == 0) {
printf("/\n");
return 0;
}
for(i = last_slash - 1; argv[1][i] == '/'; i--) {
argv[1][i] = '\0';
}
printf("%s\n", argv[1]);
return 0;
}