34 |
34 |
35 #include "../daemon/config.h" |
35 #include "../daemon/config.h" |
36 #include "../daemon/session.h" |
36 #include "../daemon/session.h" |
37 |
37 |
38 int object_type_by_extension(pblock *pb, Session *sn, Request *rq) { |
38 int object_type_by_extension(pblock *pb, Session *sn, Request *rq) { |
39 sstr_t ppath = sstr(pblock_findkeyval(pb_key_ppath, rq->vars)); |
39 sstr_t path = sstr(pblock_findkeyval(pb_key_path, rq->vars)); |
40 //printf("\nobject_type_by_extension: {%s}[%d]\n\n", ppath); |
40 //printf("\nobject_type_by_extension: {%s}[%d]\n\n", path); |
41 |
41 |
42 sstr_t ct; |
42 sstr_t ct; |
43 if(ppath.ptr[ppath.length - 1] == '/') { |
43 if(path.ptr[path.length - 1] == '/') { |
44 // directory |
44 // directory |
45 ct = sstrn("internal/directory", 18); |
45 ct = sstrn("internal/directory", 18); |
46 } else { |
46 } else { |
47 sstr_t ext; |
47 sstr_t ext; |
48 ext.length = 0; |
48 ext.length = 0; |
49 for(int i=ppath.length - 1;i>=0;i--) { |
49 for(int i=path.length - 1;i>=0;i--) { |
50 if(ppath.ptr[i] == '.') { |
50 if(path.ptr[i] == '.') { |
51 ext.ptr = ppath.ptr + i + 1; |
51 ext.ptr = path.ptr + i + 1; |
52 ext.length = ppath.length - i - 1; |
52 ext.length = path.length - i - 1; |
53 } |
53 } |
54 } |
54 } |
55 |
55 |
56 if(ext.length == 0) { |
56 if(ext.length == 0) { |
57 // no extension, no type |
57 // no extension, no type |