Fossil SCM
Have the "raw" webpage try to guess the filename and the mimetype of the artifact being downloaded, if the m= query parameter is omitted.
Commit
af16836c23b4af75986448f16fe3eb4990a89ecc
Parent
22e2051111a2e5d…
1 file changed
+8
-1
+8
-1
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -1205,14 +1205,21 @@ | ||
| 1205 | 1205 | int rid; |
| 1206 | 1206 | const char *zMime; |
| 1207 | 1207 | Blob content; |
| 1208 | 1208 | |
| 1209 | 1209 | rid = name_to_rid_www("name"); |
| 1210 | - zMime = PD("m","application/x-fossil-artifact"); | |
| 1211 | 1210 | login_check_credentials(); |
| 1212 | 1211 | if( !g.perm.Read ){ login_needed(); return; } |
| 1213 | 1212 | if( rid==0 ) fossil_redirect_home(); |
| 1213 | + zMime = P("m"); | |
| 1214 | + if( zMime==0 ){ | |
| 1215 | + char *zFName = db_text(0, "SELECT filename.name FROM mlink, filename" | |
| 1216 | + " WHERE mlink.fid=%d" | |
| 1217 | + " AND filename.fnid=mlink.fnid", rid); | |
| 1218 | + if( zFName ) zMime = mimetype_from_name(zFName); | |
| 1219 | + if( zMime==0 ) zMime = "application/x-fossil-artifact"; | |
| 1220 | + } | |
| 1214 | 1221 | content_get(rid, &content); |
| 1215 | 1222 | cgi_set_content_type(zMime); |
| 1216 | 1223 | cgi_set_content(&content); |
| 1217 | 1224 | } |
| 1218 | 1225 | |
| 1219 | 1226 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -1205,14 +1205,21 @@ | |
| 1205 | int rid; |
| 1206 | const char *zMime; |
| 1207 | Blob content; |
| 1208 | |
| 1209 | rid = name_to_rid_www("name"); |
| 1210 | zMime = PD("m","application/x-fossil-artifact"); |
| 1211 | login_check_credentials(); |
| 1212 | if( !g.perm.Read ){ login_needed(); return; } |
| 1213 | if( rid==0 ) fossil_redirect_home(); |
| 1214 | content_get(rid, &content); |
| 1215 | cgi_set_content_type(zMime); |
| 1216 | cgi_set_content(&content); |
| 1217 | } |
| 1218 | |
| 1219 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -1205,14 +1205,21 @@ | |
| 1205 | int rid; |
| 1206 | const char *zMime; |
| 1207 | Blob content; |
| 1208 | |
| 1209 | rid = name_to_rid_www("name"); |
| 1210 | login_check_credentials(); |
| 1211 | if( !g.perm.Read ){ login_needed(); return; } |
| 1212 | if( rid==0 ) fossil_redirect_home(); |
| 1213 | zMime = P("m"); |
| 1214 | if( zMime==0 ){ |
| 1215 | char *zFName = db_text(0, "SELECT filename.name FROM mlink, filename" |
| 1216 | " WHERE mlink.fid=%d" |
| 1217 | " AND filename.fnid=mlink.fnid", rid); |
| 1218 | if( zFName ) zMime = mimetype_from_name(zFName); |
| 1219 | if( zMime==0 ) zMime = "application/x-fossil-artifact"; |
| 1220 | } |
| 1221 | content_get(rid, &content); |
| 1222 | cgi_set_content_type(zMime); |
| 1223 | cgi_set_content(&content); |
| 1224 | } |
| 1225 | |
| 1226 |