Changeset 29 in Main for trunk/Server


Ignore:
Timestamp:
Sep 15, 2024, 1:33:59 AM (2 months ago)
Author:
Nishi
Message:

sort stuff

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Server/server.c

    r28 r29  
    487487                                                        addstring(&str, "                       </tr>\n");
    488488                                                        if(items != NULL) {
     489                                                                int phase = 0;
     490                                                        doit:
    489491                                                                for(i = 0; items[i] != NULL; i++) {
    490492                                                                        char* fpth = cm_strcat3(path, "/", items[i]);
     
    493495                                                                        size[0] = 0;
    494496                                                                        stat(fpth, &s);
    495                                                                         if(s.st_size < 1024ULL){
     497                                                                        if(phase == 0 && !S_ISDIR(s.st_mode)) {
     498                                                                                free(fpth);
     499                                                                                continue;
     500                                                                        } else if(phase == 1 && S_ISDIR(s.st_mode)) {
     501                                                                                free(fpth);
     502                                                                                continue;
     503                                                                        }
     504                                                                        if(s.st_size < 1024ULL) {
    496505                                                                                sprintf(size, "%d", s.st_size);
    497                                                                         }else if(s.st_size < 1024ULL * 1024){
    498                                                                                 sprintf(size, "%.1f K", (double)s.st_size / 1024);
    499                                                                         }else if(s.st_size < 1024ULL * 1024 * 1024){
    500                                                                                 sprintf(size, "%.1f M", (double)s.st_size / 1024 / 1024);
    501                                                                         }else if(s.st_size < 1024ULL * 1024 * 1024 * 1024){
    502                                                                                 sprintf(size, "%.1f G", (double)s.st_size / 1024 / 1024 / 1024);
    503                                                                         }else if(s.st_size < 1024ULL * 1024 * 1024 * 1024 * 1024){
    504                                                                                 sprintf(size, "%.1f T", (double)s.st_size / 1024 / 1024 / 1024 / 1024);
     506                                                                        } else if(s.st_size < 1024ULL * 1024) {
     507                                                                                sprintf(size, "%.1fK", (double)s.st_size / 1024);
     508                                                                        } else if(s.st_size < 1024ULL * 1024 * 1024) {
     509                                                                                sprintf(size, "%.1fM", (double)s.st_size / 1024 / 1024);
     510                                                                        } else if(s.st_size < 1024ULL * 1024 * 1024 * 1024) {
     511                                                                                sprintf(size, "%.1fG", (double)s.st_size / 1024 / 1024 / 1024);
     512                                                                        } else if(s.st_size < 1024ULL * 1024 * 1024 * 1024 * 1024) {
     513                                                                                sprintf(size, "%.1fT", (double)s.st_size / 1024 / 1024 / 1024 / 1024);
    505514                                                                        }
    506515
     
    521530                                                                        if(strcmp(items[i], "../") == 0) {
    522531                                                                                mime = "misc/parent";
     532                                                                                size[0] = 0;
    523533                                                                        } else if(items[i][strlen(items[i]) - 1] == '/') {
    524534                                                                                mime = "misc/dir";
    525                                                                         }else{
     535                                                                                size[0] = 0;
     536                                                                        } else {
    526537                                                                                showmime = mime;
    527538                                                                        }
     
    546557                                                                        addstring(&str, "       <td><img src=\"%s\" alt=\"icon\"></td>\n", icon);
    547558                                                                        addstring(&str, "       <td><a href=\"%l\"><code>%h</code></a></td>\n", items[i], itm);
    548                                                                         addstring(&str, "       <td><code>%h</code></td>\n", showmime);
    549                                                                         addstring(&str, "       <td><code>%s</code></td>\n", size);
     559                                                                        addstring(&str, "       <td><code>&emsp;&emsp;%h&emsp;&emsp;</code></td>\n", showmime);
     560                                                                        addstring(&str, "       <td><code>&emsp;&emsp;%s&emsp;&emsp;</code></td>\n", size);
    550561                                                                        addstring(&str, "</tr>\n");
    551562                                                                        free(itm);
    552563                                                                }
     564                                                                phase++;
     565                                                                if(phase != 2) goto doit;
     566                                                                for(i = 0; items[i] != NULL; i++) free(items[i]);
     567                                                                free(items);
    553568                                                        }
    554569                                                        addstring(&str, "               </table>\n");
Note: See TracChangeset for help on using the changeset viewer.