Changeset 22 in Main for trunk/Common/dir.c


Ignore:
Timestamp:
Sep 14, 2024, 10:25:38 PM (2 months ago)
Author:
Nishi
Message:

icon works

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Common/dir.c

    r21 r22  
    1010#include <string.h>
    1111
    12 int cm_sort(const void* _a, const void* _b){
     12int cm_sort(const void* _a, const void* _b) {
    1313        char* a = *(char**)_a;
    1414        char* b = *(char**)_b;
     
    1616}
    1717
    18 char** cm_scandir(const char* path){
     18char** cm_scandir(const char* path) {
    1919        DIR* dir = opendir(path);
    20         if(dir != NULL){
     20        if(dir != NULL) {
    2121                char** r = malloc(sizeof(*r));
    2222                r[0] = NULL;
    2323                struct dirent* d;
    24                 while((d = readdir(dir)) != NULL){
    25                         if(strcmp(d->d_name, ".") != 0){
     24                while((d = readdir(dir)) != NULL) {
     25                        if(strcmp(d->d_name, ".") != 0 && strcmp(d->d_name, "..") != 0) {
    2626                                struct stat s;
    2727                                char* p = cm_strcat3(path, "/", d->d_name);
     
    3131                                char** old = r;
    3232                                int i;
    33                                 for(i = 0; old[i] != NULL; i++);
     33                                for(i = 0; old[i] != NULL; i++)
     34                                        ;
    3435                                r = malloc(sizeof(*r) * (i + 2));
    3536                                for(i = 0; old[i] != NULL; i++) r[i] = old[i];
     
    4041                }
    4142                int len;
    42                 for(len = 0; r[len] != NULL; len++);
     43                for(len = 0; r[len] != NULL; len++)
     44                        ;
    4345                qsort(r, len, sizeof(char*), cm_sort);
     46
     47                char** old = r;
     48                int i;
     49                for(i = 0; old[i] != NULL; i++)
     50                        ;
     51                r = malloc(sizeof(*r) * (i + 2));
     52                for(i = 0; old[i] != NULL; i++) r[i + 1] = old[i];
     53                r[0] = cm_strdup("../");
     54                r[i + 1] = NULL;
     55                free(old);
     56
    4457                return r;
    45         }else{
     58        } else {
    4659                return NULL;
    4760        }
Note: See TracChangeset for help on using the changeset viewer.