Artifact
a4c21b5f66db654a6e797c80287c7eff24ff4dd3:
Attachment "fix-doc-redirect.diff" to
ticket [1ec8be0c53]
added by
anonymous
2010-06-17 14:35:50.
0000: 49 6e 64 65 78 3a 20 73 72 63 2f 64 6f 63 2e 63 Index: src/doc.c
0010: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .===============
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0050: 3d 3d 3d 3d 0a 2d 2d 2d 20 73 72 63 2f 64 6f 63 ====.--- src/doc
0060: 2e 63 0a 2b 2b 2b 20 73 72 63 2f 64 6f 63 2e 63 .c.+++ src/doc.c
0070: 0a 40 40 20 2d 33 30 38 2c 31 30 20 2b 33 30 38 .@@ -308,10 +308
0080: 2c 31 34 20 40 40 0a 20 20 20 20 20 7d 0a 20 20 ,14 @@. }.
0090: 20 7d 0a 20 20 20 72 65 74 75 72 6e 20 22 61 70 }. return "ap
00a0: 70 6c 69 63 61 74 69 6f 6e 2f 78 2d 66 6f 73 73 plication/x-foss
00b0: 69 6c 2d 61 72 74 69 66 61 63 74 22 3b 0a 20 7d il-artifact";. }
00c0: 0a 20 0a 2b 73 74 61 74 69 63 20 76 6f 69 64 20 . .+static void
00d0: 64 6f 63 5f 69 6e 64 65 78 5f 72 65 64 69 72 65 doc_index_redire
00e0: 63 74 28 76 6f 69 64 29 7b 0a 2b 20 20 20 20 64 ct(void){.+ d
00f0: 62 5f 65 6e 64 5f 74 72 61 6e 73 61 63 74 69 6f b_end_transactio
0100: 6e 28 30 29 3b 0a 2b 20 20 20 20 63 67 69 5f 72 n(0);.+ cgi_r
0110: 65 64 69 72 65 63 74 66 28 22 25 73 25 73 22 2c edirectf("%s%s",
0120: 20 67 2e 7a 42 61 73 65 55 52 4c 2c 20 22 2f 64 g.zBaseURL, "/d
0130: 6f 63 2f 74 69 70 2f 69 6e 64 65 78 2e 77 69 6b oc/tip/index.wik
0140: 69 22 29 3b 0a 2b 7d 0a 20 2f 2a 0a 20 2a 2a 20 i");.+}. /*. **
0150: 57 45 42 50 41 47 45 3a 20 64 6f 63 0a 20 2a 2a WEBPAGE: doc. **
0160: 20 55 52 4c 3a 20 2f 64 6f 63 3f 6e 61 6d 65 3d URL: /doc?name=
0170: 42 41 53 45 4c 49 4e 45 2f 50 41 54 48 0a 20 2a BASELINE/PATH. *
0180: 2a 20 55 52 4c 3a 20 2f 64 6f 63 2f 42 41 53 45 * URL: /doc/BASE
0190: 4c 49 4e 45 2f 50 41 54 48 0a 20 2a 2a 0a 40 40 LINE/PATH. **.@@
01a0: 20 2d 33 33 35 2c 31 33 20 2b 33 33 39 2c 31 36 -335,13 +339,16
01b0: 20 40 40 0a 20 20 20 63 68 61 72 20 7a 42 61 73 @@. char zBas
01c0: 65 6c 69 6e 65 5b 55 55 49 44 5f 53 49 5a 45 2b eline[UUID_SIZE+
01d0: 31 5d 3b 20 20 20 20 20 20 2f 2a 20 42 61 73 65 1]; /* Base
01e0: 6c 69 6e 65 20 55 55 49 44 20 2a 2f 0a 20 20 20 line UUID */.
01f0: 63 68 61 72 20 2a 20 72 65 61 73 6f 6e 20 3d 20 char * reason =
0200: 22 64 6f 63 75 6d 65 6e 74 20 6e 6f 74 20 70 72 "document not pr
0210: 65 73 65 6e 74 20 69 6e 20 74 68 65 20 72 65 70 esent in the rep
0220: 6f 73 69 74 6f 72 79 22 3b 0a 20 0a 20 20 20 6c ository";. . l
0230: 6f 67 69 6e 5f 63 68 65 63 6b 5f 63 72 65 64 65 ogin_check_crede
0240: 6e 74 69 61 6c 73 28 29 3b 0a 20 20 20 69 66 28 ntials();. if(
0250: 20 21 67 2e 6f 6b 52 65 61 64 20 29 7b 20 6c 6f !g.okRead ){ lo
0260: 67 69 6e 5f 6e 65 65 64 65 64 28 29 3b 20 72 65 gin_needed(); re
0270: 74 75 72 6e 3b 20 7d 0a 2d 20 20 7a 4e 61 6d 65 turn; }.- zName
0280: 20 3d 20 50 44 28 22 6e 61 6d 65 22 2c 20 22 74 = PD("name", "t
0290: 69 70 2f 69 6e 64 65 78 2e 77 69 6b 69 22 29 3b ip/index.wiki");
02a0: 0a 2b 20 20 7a 4e 61 6d 65 20 3d 20 50 28 22 6e .+ zName = P("n
02b0: 61 6d 65 22 29 3b 0a 2b 20 20 69 66 28 20 21 7a ame");.+ if( !z
02c0: 4e 61 6d 65 29 20 7b 20 72 65 74 75 72 6e 20 64 Name) { return d
02d0: 6f 63 5f 69 6e 64 65 78 5f 72 65 64 69 72 65 63 oc_index_redirec
02e0: 74 28 29 3b 20 7d 0a 20 20 20 66 6f 72 28 69 3d t(); }. for(i=
02f0: 30 3b 20 7a 4e 61 6d 65 5b 69 5d 20 26 26 20 7a 0; zName[i] && z
0300: 4e 61 6d 65 5b 69 5d 21 3d 27 2f 27 3b 20 69 2b Name[i]!='/'; i+
0310: 2b 29 7b 7d 0a 2b 20 20 69 66 28 20 21 20 2a 7a +){}.+ if( ! *z
0320: 4e 61 6d 65 29 20 7b 20 72 65 74 75 72 6e 20 64 Name) { return d
0330: 6f 63 5f 69 6e 64 65 78 5f 72 65 64 69 72 65 63 oc_index_redirec
0340: 74 28 29 3b 20 7d 0a 20 20 20 69 66 28 20 7a 4e t(); }. if( zN
0350: 61 6d 65 5b 69 5d 3d 3d 30 20 7c 7c 20 69 3e 55 ame[i]==0 || i>U
0360: 55 49 44 5f 53 49 5a 45 20 29 7b 0a 2b 20 20 20 UID_SIZE ){.+
0370: 20 72 65 61 73 6f 6e 20 3d 20 22 69 6e 76 61 6c reason = "inval
0380: 69 64 20 64 6f 63 75 6d 65 6e 74 20 73 70 65 63 id document spec
0390: 69 66 69 65 64 22 3b 0a 20 20 20 20 20 67 6f 74 ified";. got
03a0: 6f 20 64 6f 63 5f 6e 6f 74 5f 66 6f 75 6e 64 3b o doc_not_found;
03b0: 0a 20 20 20 7d 0a 20 20 20 6d 65 6d 63 70 79 28 . }. memcpy(
03c0: 7a 42 61 73 65 6c 69 6e 65 2c 20 7a 4e 61 6d 65 zBaseline, zName
03d0: 2c 20 69 29 3b 0a 20 20 20 7a 42 61 73 65 6c 69 , i);. zBaseli
03e0: 6e 65 5b 69 5d 20 3d 20 30 3b 0a 20 20 20 7a 4e ne[i] = 0;. zN
03f0: 61 6d 65 20 2b 3d 20 69 3b 0a 0a ame += i;..