Changeset 28 in Main for trunk/Server/server.c


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

show size

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Server/server.c

    r24 r28  
    483483                                                        addstring(&str, "                               <th></th>\n");
    484484                                                        addstring(&str, "                               <th>Filename</th>\n");
     485                                                        addstring(&str, "                               <th>MIME</th>\n");
     486                                                        addstring(&str, "                               <th>Size</th>\n");
    485487                                                        addstring(&str, "                       </tr>\n");
    486488                                                        if(items != NULL) {
    487489                                                                for(i = 0; items[i] != NULL; i++) {
     490                                                                        char* fpth = cm_strcat3(path, "/", items[i]);
     491                                                                        struct stat s;
     492                                                                        char size[512];
     493                                                                        size[0] = 0;
     494                                                                        stat(fpth, &s);
     495                                                                        if(s.st_size < 1024ULL){
     496                                                                                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);
     505                                                                        }
     506
     507                                                                        free(fpth);
     508
    488509                                                                        char* ext = NULL;
    489510                                                                        int j;
     
    496517                                                                                }
    497518                                                                        }
     519                                                                        char* showmime = "";
    498520                                                                        char* mime = tw_get_mime(ext, vhost_entry);
    499521                                                                        if(strcmp(items[i], "../") == 0) {
     
    501523                                                                        } else if(items[i][strlen(items[i]) - 1] == '/') {
    502524                                                                                mime = "misc/dir";
     525                                                                        }else{
     526                                                                                showmime = mime;
    503527                                                                        }
    504528                                                                        char* icon = tw_get_icon(mime, vhost_entry);
     
    522546                                                                        addstring(&str, "       <td><img src=\"%s\" alt=\"icon\"></td>\n", icon);
    523547                                                                        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);
    524550                                                                        addstring(&str, "</tr>\n");
    525551                                                                        free(itm);
Note: See TracChangeset for help on using the changeset viewer.