Subversion Repositories HelenOS

Rev

Rev 3354 | Rev 3364 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3354 Rev 3355
Line 145... Line 145...
145
    } else {
145
    } else {
146
        i = 0;
146
        i = 0;
147
    }
147
    }
148
 
148
 
149
    while (dirs[i] != NULL) {
149
    while (dirs[i] != NULL) {
-
 
150
        /* Sometimes make or scripts conjoin odd paths. Account for something
150
        /* Rewind to start of relative path */
151
         * like this: ../../foo/bar/../foo/foofoo/./bar */
151
        while (!strcmp(dirs[i], "..")) {
152
        if (!strcmp(dirs[i], "..") || !strcmp(dirs[i], ".")) {
152
            if (0 != (chdir(dirs[i]))) {
153
            if (0 != (chdir(dirs[i]))) {
153
                cli_error(CL_EFAIL, "%s: impossible path: %s",
154
                cli_error(CL_EFAIL, "%s: impossible path: %s",
154
                    cmdname, path);
155
                    cmdname, path);
155
                ret ++;
156
                ret ++;
156
                goto finit;
157
                goto finit;
157
            }
158
            }
158
            i++;
-
 
159
        }
-
 
160
        getcwd(wdp, PATH_MAX);
-
 
161
        /* Sometimes make or scripts conjoin odd paths. Account for something
-
 
162
         * like this: ../../foo/bar/../foo/foofoo/./bar */
-
 
163
        if (!strcmp(dirs[i], "..") || !strcmp(dirs[i], ".")) {
-
 
164
            chdir(dirs[i]);
-
 
165
            getcwd(wdp, PATH_MAX);
159
            getcwd(wdp, PATH_MAX);
166
        } else {
160
        } else {
167
            if (-1 == (mkdir(dirs[i], 0))) {
161
            if (-1 == (mkdir(dirs[i], 0))) {
168
                cli_error(CL_EFAIL,
162
                cli_error(CL_EFAIL,
169
                    "%s: failed at %s/%s", wdp, dirs[i]);
163
                    "%s: failed at %s/%s", wdp, dirs[i]);