1219b2ee8SDavid du Colombier #include <stdlib.h> 2219b2ee8SDavid du Colombier #include <string.h> 3219b2ee8SDavid du Colombier #include <stdio.h> 4219b2ee8SDavid du Colombier main(int argc,char ** argv)5219b2ee8SDavid du Colombiermain(int argc, char **argv) 6219b2ee8SDavid du Colombier { 7219b2ee8SDavid du Colombier char *f, *s; 8219b2ee8SDavid du Colombier int n; 9219b2ee8SDavid du Colombier 10219b2ee8SDavid du Colombier if(argc != 2){ 11219b2ee8SDavid du Colombier fprintf(stderr, "Usage: dirname string\n"); 12219b2ee8SDavid du Colombier exit(1); 13219b2ee8SDavid du Colombier } 14219b2ee8SDavid du Colombier s = argv[1]; 15219b2ee8SDavid du Colombier f = s + strlen(s) - 1; 16219b2ee8SDavid du Colombier while(f > s && *f == '/') 17219b2ee8SDavid du Colombier f--; 18219b2ee8SDavid du Colombier *++f = 0; 19219b2ee8SDavid du Colombier /* now f is after last char of string, trailing slashes removed */ 20219b2ee8SDavid du Colombier 21219b2ee8SDavid du Colombier for(; f >= s; f--) 22219b2ee8SDavid du Colombier if(*f == '/'){ 23219b2ee8SDavid du Colombier f++; 24219b2ee8SDavid du Colombier break; 25219b2ee8SDavid du Colombier } 26219b2ee8SDavid du Colombier if(f < s) { 27219b2ee8SDavid du Colombier *s = '.'; 28219b2ee8SDavid du Colombier s[1] = 0; 29219b2ee8SDavid du Colombier } else { 30219b2ee8SDavid du Colombier --f; 31219b2ee8SDavid du Colombier while(f > s && *f == '/') 32219b2ee8SDavid du Colombier f--; 33219b2ee8SDavid du Colombier f[1] = 0; 34219b2ee8SDavid du Colombier } 35219b2ee8SDavid du Colombier 36219b2ee8SDavid du Colombier printf("%s\n", s); 37*d9306527SDavid du Colombier return 0; 38219b2ee8SDavid du Colombier } 39