Fossil SCM

Merge in the WYSIWYG editor branch, making WYSIWYG an option for trunk users. WYSIWYG is still off by default.

drh 2012-08-14 17:30 trunk merge
Commit 65870e8736f65fbc55d50901e49cb73b17f05e5b
+8
--- src/cgi.c
+++ src/cgi.c
@@ -95,10 +95,18 @@
9595
default: {
9696
cgi_panic("bad destination");
9797
}
9898
}
9999
}
100
+
101
+/*
102
+** Check to see if the header contains the zNeedle string. Return true
103
+** if it does and false if it does not.
104
+*/
105
+int cgi_header_contains(const char *zNeedle){
106
+ return strstr(blob_str(&cgiContent[0]), zNeedle)!=0;
107
+}
100108
101109
/*
102110
** Append reply content to what already exists.
103111
*/
104112
void cgi_append_content(const char *zData, int nAmt){
105113
--- src/cgi.c
+++ src/cgi.c
@@ -95,10 +95,18 @@
95 default: {
96 cgi_panic("bad destination");
97 }
98 }
99 }
 
 
 
 
 
 
 
 
100
101 /*
102 ** Append reply content to what already exists.
103 */
104 void cgi_append_content(const char *zData, int nAmt){
105
--- src/cgi.c
+++ src/cgi.c
@@ -95,10 +95,18 @@
95 default: {
96 cgi_panic("bad destination");
97 }
98 }
99 }
100
101 /*
102 ** Check to see if the header contains the zNeedle string. Return true
103 ** if it does and false if it does not.
104 */
105 int cgi_header_contains(const char *zNeedle){
106 return strstr(blob_str(&cgiContent[0]), zNeedle)!=0;
107 }
108
109 /*
110 ** Append reply content to what already exists.
111 */
112 void cgi_append_content(const char *zData, int nAmt){
113
+11 -1
--- src/main.mk
+++ src/main.mk
@@ -106,10 +106,11 @@
106106
$(SRCDIR)/verify.c \
107107
$(SRCDIR)/vfile.c \
108108
$(SRCDIR)/wiki.c \
109109
$(SRCDIR)/wikiformat.c \
110110
$(SRCDIR)/winhttp.c \
111
+ $(SRCDIR)/wysiwyg.c \
111112
$(SRCDIR)/xfer.c \
112113
$(SRCDIR)/xfersetup.c \
113114
$(SRCDIR)/zip.c
114115
115116
TRANS_SRC = \
@@ -205,10 +206,11 @@
205206
$(OBJDIR)/verify_.c \
206207
$(OBJDIR)/vfile_.c \
207208
$(OBJDIR)/wiki_.c \
208209
$(OBJDIR)/wikiformat_.c \
209210
$(OBJDIR)/winhttp_.c \
211
+ $(OBJDIR)/wysiwyg_.c \
210212
$(OBJDIR)/xfer_.c \
211213
$(OBJDIR)/xfersetup_.c \
212214
$(OBJDIR)/zip_.c
213215
214216
OBJ = \
@@ -304,10 +306,11 @@
304306
$(OBJDIR)/verify.o \
305307
$(OBJDIR)/vfile.o \
306308
$(OBJDIR)/wiki.o \
307309
$(OBJDIR)/wikiformat.o \
308310
$(OBJDIR)/winhttp.o \
311
+ $(OBJDIR)/wysiwyg.o \
309312
$(OBJDIR)/xfer.o \
310313
$(OBJDIR)/xfersetup.o \
311314
$(OBJDIR)/zip.o
312315
313316
APPNAME = fossil$(E)
@@ -375,11 +378,11 @@
375378
376379
377380
$(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
378381
$(OBJDIR)/mkindex $(TRANS_SRC) >$@
379382
$(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
380
- $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h $(OBJDIR)/json_dir_.c:$(OBJDIR)/json_dir.h $(OBJDIR)/json_finfo_.c:$(OBJDIR)/json_finfo.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/json_query_.c:$(OBJDIR)/json_query.h $(OBJDIR)/json_report_.c:$(OBJDIR)/json_report.h $(OBJDIR)/json_tag_.c:$(OBJDIR)/json_tag.h $(OBJDIR)/json_timeline_.c:$(OBJDIR)/json_timeline.h $(OBJDIR)/json_user_.c:$(OBJDIR)/json_user.h $(OBJDIR)/json_wiki_.c:$(OBJDIR)/json_wiki.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/xfersetup_.c:$(OBJDIR)/xfersetup.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
383
+ $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h $(OBJDIR)/json_dir_.c:$(OBJDIR)/json_dir.h $(OBJDIR)/json_finfo_.c:$(OBJDIR)/json_finfo.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/json_query_.c:$(OBJDIR)/json_query.h $(OBJDIR)/json_report_.c:$(OBJDIR)/json_report.h $(OBJDIR)/json_tag_.c:$(OBJDIR)/json_tag.h $(OBJDIR)/json_timeline_.c:$(OBJDIR)/json_timeline.h $(OBJDIR)/json_user_.c:$(OBJDIR)/json_user.h $(OBJDIR)/json_wiki_.c:$(OBJDIR)/json_wiki.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/wysiwyg_.c:$(OBJDIR)/wysiwyg.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/xfersetup_.c:$(OBJDIR)/xfersetup.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
381384
touch $(OBJDIR)/headers
382385
$(OBJDIR)/headers: Makefile
383386
$(OBJDIR)/json.o $(OBJDIR)/json_artifact.o $(OBJDIR)/json_branch.o $(OBJDIR)/json_config.o $(OBJDIR)/json_diff.o $(OBJDIR)/json_dir.o $(OBJDIR)/json_finfo.o $(OBJDIR)/json_login.o $(OBJDIR)/json_query.o $(OBJDIR)/json_report.o $(OBJDIR)/json_tag.o $(OBJDIR)/json_timeline.o $(OBJDIR)/json_user.o $(OBJDIR)/json_wiki.o : $(SRCDIR)/json_detail.h
384387
Makefile:
385388
$(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
@@ -1038,10 +1041,17 @@
10381041
10391042
$(OBJDIR)/winhttp.o: $(OBJDIR)/winhttp_.c $(OBJDIR)/winhttp.h $(SRCDIR)/config.h
10401043
$(XTCC) -o $(OBJDIR)/winhttp.o -c $(OBJDIR)/winhttp_.c
10411044
10421045
$(OBJDIR)/winhttp.h: $(OBJDIR)/headers
1046
+$(OBJDIR)/wysiwyg_.c: $(SRCDIR)/wysiwyg.c $(OBJDIR)/translate
1047
+ $(OBJDIR)/translate $(SRCDIR)/wysiwyg.c >$(OBJDIR)/wysiwyg_.c
1048
+
1049
+$(OBJDIR)/wysiwyg.o: $(OBJDIR)/wysiwyg_.c $(OBJDIR)/wysiwyg.h $(SRCDIR)/config.h
1050
+ $(XTCC) -o $(OBJDIR)/wysiwyg.o -c $(OBJDIR)/wysiwyg_.c
1051
+
1052
+$(OBJDIR)/wysiwyg.h: $(OBJDIR)/headers
10431053
$(OBJDIR)/xfer_.c: $(SRCDIR)/xfer.c $(OBJDIR)/translate
10441054
$(OBJDIR)/translate $(SRCDIR)/xfer.c >$(OBJDIR)/xfer_.c
10451055
10461056
$(OBJDIR)/xfer.o: $(OBJDIR)/xfer_.c $(OBJDIR)/xfer.h $(SRCDIR)/config.h
10471057
$(XTCC) -o $(OBJDIR)/xfer.o -c $(OBJDIR)/xfer_.c
10481058
--- src/main.mk
+++ src/main.mk
@@ -106,10 +106,11 @@
106 $(SRCDIR)/verify.c \
107 $(SRCDIR)/vfile.c \
108 $(SRCDIR)/wiki.c \
109 $(SRCDIR)/wikiformat.c \
110 $(SRCDIR)/winhttp.c \
 
111 $(SRCDIR)/xfer.c \
112 $(SRCDIR)/xfersetup.c \
113 $(SRCDIR)/zip.c
114
115 TRANS_SRC = \
@@ -205,10 +206,11 @@
205 $(OBJDIR)/verify_.c \
206 $(OBJDIR)/vfile_.c \
207 $(OBJDIR)/wiki_.c \
208 $(OBJDIR)/wikiformat_.c \
209 $(OBJDIR)/winhttp_.c \
 
210 $(OBJDIR)/xfer_.c \
211 $(OBJDIR)/xfersetup_.c \
212 $(OBJDIR)/zip_.c
213
214 OBJ = \
@@ -304,10 +306,11 @@
304 $(OBJDIR)/verify.o \
305 $(OBJDIR)/vfile.o \
306 $(OBJDIR)/wiki.o \
307 $(OBJDIR)/wikiformat.o \
308 $(OBJDIR)/winhttp.o \
 
309 $(OBJDIR)/xfer.o \
310 $(OBJDIR)/xfersetup.o \
311 $(OBJDIR)/zip.o
312
313 APPNAME = fossil$(E)
@@ -375,11 +378,11 @@
375
376
377 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
378 $(OBJDIR)/mkindex $(TRANS_SRC) >$@
379 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
380 $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h $(OBJDIR)/json_dir_.c:$(OBJDIR)/json_dir.h $(OBJDIR)/json_finfo_.c:$(OBJDIR)/json_finfo.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/json_query_.c:$(OBJDIR)/json_query.h $(OBJDIR)/json_report_.c:$(OBJDIR)/json_report.h $(OBJDIR)/json_tag_.c:$(OBJDIR)/json_tag.h $(OBJDIR)/json_timeline_.c:$(OBJDIR)/json_timeline.h $(OBJDIR)/json_user_.c:$(OBJDIR)/json_user.h $(OBJDIR)/json_wiki_.c:$(OBJDIR)/json_wiki.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/xfersetup_.c:$(OBJDIR)/xfersetup.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
381 touch $(OBJDIR)/headers
382 $(OBJDIR)/headers: Makefile
383 $(OBJDIR)/json.o $(OBJDIR)/json_artifact.o $(OBJDIR)/json_branch.o $(OBJDIR)/json_config.o $(OBJDIR)/json_diff.o $(OBJDIR)/json_dir.o $(OBJDIR)/json_finfo.o $(OBJDIR)/json_login.o $(OBJDIR)/json_query.o $(OBJDIR)/json_report.o $(OBJDIR)/json_tag.o $(OBJDIR)/json_timeline.o $(OBJDIR)/json_user.o $(OBJDIR)/json_wiki.o : $(SRCDIR)/json_detail.h
384 Makefile:
385 $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
@@ -1038,10 +1041,17 @@
1038
1039 $(OBJDIR)/winhttp.o: $(OBJDIR)/winhttp_.c $(OBJDIR)/winhttp.h $(SRCDIR)/config.h
1040 $(XTCC) -o $(OBJDIR)/winhttp.o -c $(OBJDIR)/winhttp_.c
1041
1042 $(OBJDIR)/winhttp.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
1043 $(OBJDIR)/xfer_.c: $(SRCDIR)/xfer.c $(OBJDIR)/translate
1044 $(OBJDIR)/translate $(SRCDIR)/xfer.c >$(OBJDIR)/xfer_.c
1045
1046 $(OBJDIR)/xfer.o: $(OBJDIR)/xfer_.c $(OBJDIR)/xfer.h $(SRCDIR)/config.h
1047 $(XTCC) -o $(OBJDIR)/xfer.o -c $(OBJDIR)/xfer_.c
1048
--- src/main.mk
+++ src/main.mk
@@ -106,10 +106,11 @@
106 $(SRCDIR)/verify.c \
107 $(SRCDIR)/vfile.c \
108 $(SRCDIR)/wiki.c \
109 $(SRCDIR)/wikiformat.c \
110 $(SRCDIR)/winhttp.c \
111 $(SRCDIR)/wysiwyg.c \
112 $(SRCDIR)/xfer.c \
113 $(SRCDIR)/xfersetup.c \
114 $(SRCDIR)/zip.c
115
116 TRANS_SRC = \
@@ -205,10 +206,11 @@
206 $(OBJDIR)/verify_.c \
207 $(OBJDIR)/vfile_.c \
208 $(OBJDIR)/wiki_.c \
209 $(OBJDIR)/wikiformat_.c \
210 $(OBJDIR)/winhttp_.c \
211 $(OBJDIR)/wysiwyg_.c \
212 $(OBJDIR)/xfer_.c \
213 $(OBJDIR)/xfersetup_.c \
214 $(OBJDIR)/zip_.c
215
216 OBJ = \
@@ -304,10 +306,11 @@
306 $(OBJDIR)/verify.o \
307 $(OBJDIR)/vfile.o \
308 $(OBJDIR)/wiki.o \
309 $(OBJDIR)/wikiformat.o \
310 $(OBJDIR)/winhttp.o \
311 $(OBJDIR)/wysiwyg.o \
312 $(OBJDIR)/xfer.o \
313 $(OBJDIR)/xfersetup.o \
314 $(OBJDIR)/zip.o
315
316 APPNAME = fossil$(E)
@@ -375,11 +378,11 @@
378
379
380 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
381 $(OBJDIR)/mkindex $(TRANS_SRC) >$@
382 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
383 $(OBJDIR)/makeheaders $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h $(OBJDIR)/json_dir_.c:$(OBJDIR)/json_dir.h $(OBJDIR)/json_finfo_.c:$(OBJDIR)/json_finfo.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/json_query_.c:$(OBJDIR)/json_query.h $(OBJDIR)/json_report_.c:$(OBJDIR)/json_report.h $(OBJDIR)/json_tag_.c:$(OBJDIR)/json_tag.h $(OBJDIR)/json_timeline_.c:$(OBJDIR)/json_timeline.h $(OBJDIR)/json_user_.c:$(OBJDIR)/json_user.h $(OBJDIR)/json_wiki_.c:$(OBJDIR)/json_wiki.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/wysiwyg_.c:$(OBJDIR)/wysiwyg.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/xfersetup_.c:$(OBJDIR)/xfersetup.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
384 touch $(OBJDIR)/headers
385 $(OBJDIR)/headers: Makefile
386 $(OBJDIR)/json.o $(OBJDIR)/json_artifact.o $(OBJDIR)/json_branch.o $(OBJDIR)/json_config.o $(OBJDIR)/json_diff.o $(OBJDIR)/json_dir.o $(OBJDIR)/json_finfo.o $(OBJDIR)/json_login.o $(OBJDIR)/json_query.o $(OBJDIR)/json_report.o $(OBJDIR)/json_tag.o $(OBJDIR)/json_timeline.o $(OBJDIR)/json_user.o $(OBJDIR)/json_wiki.o : $(SRCDIR)/json_detail.h
387 Makefile:
388 $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
@@ -1038,10 +1041,17 @@
1041
1042 $(OBJDIR)/winhttp.o: $(OBJDIR)/winhttp_.c $(OBJDIR)/winhttp.h $(SRCDIR)/config.h
1043 $(XTCC) -o $(OBJDIR)/winhttp.o -c $(OBJDIR)/winhttp_.c
1044
1045 $(OBJDIR)/winhttp.h: $(OBJDIR)/headers
1046 $(OBJDIR)/wysiwyg_.c: $(SRCDIR)/wysiwyg.c $(OBJDIR)/translate
1047 $(OBJDIR)/translate $(SRCDIR)/wysiwyg.c >$(OBJDIR)/wysiwyg_.c
1048
1049 $(OBJDIR)/wysiwyg.o: $(OBJDIR)/wysiwyg_.c $(OBJDIR)/wysiwyg.h $(SRCDIR)/config.h
1050 $(XTCC) -o $(OBJDIR)/wysiwyg.o -c $(OBJDIR)/wysiwyg_.c
1051
1052 $(OBJDIR)/wysiwyg.h: $(OBJDIR)/headers
1053 $(OBJDIR)/xfer_.c: $(SRCDIR)/xfer.c $(OBJDIR)/translate
1054 $(OBJDIR)/translate $(SRCDIR)/xfer.c >$(OBJDIR)/xfer_.c
1055
1056 $(OBJDIR)/xfer.o: $(OBJDIR)/xfer_.c $(OBJDIR)/xfer.h $(SRCDIR)/config.h
1057 $(XTCC) -o $(OBJDIR)/xfer.o -c $(OBJDIR)/xfer_.c
1058
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -109,10 +109,11 @@
109109
verify
110110
vfile
111111
wiki
112112
wikiformat
113113
winhttp
114
+ wysiwyg
114115
xfer
115116
xfersetup
116117
zip
117118
http_ssl
118119
}
119120
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -109,10 +109,11 @@
109 verify
110 vfile
111 wiki
112 wikiformat
113 winhttp
 
114 xfer
115 xfersetup
116 zip
117 http_ssl
118 }
119
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -109,10 +109,11 @@
109 verify
110 vfile
111 wiki
112 wikiformat
113 winhttp
114 wysiwyg
115 xfer
116 xfersetup
117 zip
118 http_ssl
119 }
120
+50 -13
--- src/setup.c
+++ src/setup.c
@@ -57,10 +57,19 @@
5757
if( !g.perm.Setup ){
5858
login_needed();
5959
}
6060
6161
style_header("Server Administration");
62
+
63
+ /* Make sure the header contains <base href="...">. Issue a warning
64
+ ** if it does not. */
65
+ if( !cgi_header_contains("<base href=") ){
66
+ @ <p class="generalError"><b>Configuration Error:</b> Please add
67
+ @ <tt>&lt;base href="$baseurl/$current_page"&gt</tt> after
68
+ @ <tt>&lt;head&gt;</tt> in the <a href="setup_header">HTML header</a>!</p>
69
+ }
70
+
6271
@ <table border="0" cellspacing="7">
6372
setup_menu_entry("Users", "setup_ulist",
6473
"Grant privileges to individual users.");
6574
setup_menu_entry("Access", "setup_access",
6675
"Control access settings.");
@@ -869,13 +878,15 @@
869878
login_verify_csrf_secret();
870879
db_set(zVar, zQ, 0);
871880
z = zQ;
872881
}
873882
if( rows>0 && cols>0 ){
874
- @ <textarea name="%s(zQP)" rows="%d(rows)" cols="%d(cols)">%h(z)</textarea>
875
- if (zLabel && *zLabel)
883
+ @ <textarea id="id%s(zQP)" name="%s(zQP)" rows="%d(rows)"
884
+ @ cols="%d(cols)">%h(z)</textarea>
885
+ if (zLabel && *zLabel){
876886
@ <span class="textareaLabel">%s(zLabel)</span>
887
+ }
877888
}
878889
}
879890
880891
881892
/*
@@ -1237,15 +1248,21 @@
12371248
@ <hr />
12381249
entry_attribute("Project Name", 60, "project-name", "pn", "");
12391250
@ <p>Give your project a name so visitors know what this site is about.
12401251
@ The project name will also be used as the RSS feed title.</p>
12411252
@ <hr />
1242
- textarea_attribute("Project Description", 5, 60,
1253
+ textarea_attribute("Project Description", 3, 80,
12431254
"project-description", "pd", "");
12441255
@ <p>Describe your project. This will be used in page headers for search
12451256
@ engines as well as a short RSS description.</p>
12461257
@ <hr />
1258
+ onoff_attribute("Enable WYSIWYG Wiki Editing",
1259
+ "wysiwyg-wiki", "wysiwyg-wiki", 0);
1260
+ @ <p>Enable what-you-see-is-what-you-get (WYSIWYG) editing of wiki pages.
1261
+ @ The WYSIWYG editor generates HTML instead of markup, which makes
1262
+ @ subsequent manual editing more difficult.</p>
1263
+ @ <hr />
12471264
entry_attribute("Index Page", 60, "index-page", "idxpg", "/home");
12481265
@ <p>Enter the pathname of the page to display when the "Home" menu
12491266
@ option is selected and when no pathname is
12501267
@ specified in the URL. For example, if you visit the url:</p>
12511268
@
@@ -1297,22 +1314,21 @@
12971314
if( P("clear")!=0 ){
12981315
db_multi_exec("DELETE FROM config WHERE name='css'");
12991316
cgi_replace_parameter("css", zDefaultCSS);
13001317
db_end_transaction(0);
13011318
cgi_redirect("setup_editcss");
1302
- }else{
1303
- textarea_attribute(0, 0, 0, "css", "css", zDefaultCSS);
13041319
}
13051320
if( P("submit")!=0 ){
1321
+ textarea_attribute(0, 0, 0, "css", "css", zDefaultCSS);
13061322
db_end_transaction(0);
13071323
cgi_redirect("setup_editcss");
13081324
}
13091325
style_header("Edit CSS");
13101326
@ <form action="%s(g.zTop)/setup_editcss" method="post"><div>
13111327
login_insert_csrf_secret();
13121328
@ Edit the CSS below:<br />
1313
- textarea_attribute("", 40, 80, "css", "css", zDefaultCSS);
1329
+ textarea_attribute("", 35, 80, "css", "css", zDefaultCSS);
13141330
@ <br />
13151331
@ <input type="submit" name="submit" value="Apply Changes" />
13161332
@ <input type="submit" name="clear" value="Revert To Default" />
13171333
@ </div></form>
13181334
@ <p><span class="note">Note:</span> Press your browser Reload button after
@@ -1339,20 +1355,43 @@
13391355
}
13401356
db_begin_transaction();
13411357
if( P("clear")!=0 ){
13421358
db_multi_exec("DELETE FROM config WHERE name='header'");
13431359
cgi_replace_parameter("header", zDefaultHeader);
1344
- }else{
1360
+ }else if( P("submit")!=0 ){
13451361
textarea_attribute(0, 0, 0, "header", "header", zDefaultHeader);
1362
+ }else if( P("fixbase")!=0 ){
1363
+ const char *z = db_get("header", (char*)zDefaultHeader);
1364
+ char *zHead = strstr(z, "<head>");
1365
+ if( strstr(z, "<base href=")==0 && zHead!=0 ){
1366
+ char *zNew;
1367
+ char *zTail = &zHead[6];
1368
+ while( fossil_isspace(zTail[0]) ) zTail++;
1369
+ zNew = mprintf("%.*s\n<base href=\"$baseurl/$current_page\" />\n%s",
1370
+ zHead+6-z, z, zTail);
1371
+ cgi_replace_parameter("header", zNew);
1372
+ db_set("header", zNew, 0);
1373
+ }
13461374
}
1375
+
13471376
style_header("Edit Page Header");
1348
- @ <form action="%s(g.zTop)/setup_header" method="post"><div>
1377
+ @ <form action="%R/setup_header" method="post"><div>
1378
+
1379
+ /* Make sure the header contains <base href="...">. Issue a warning
1380
+ ** if it does not. */
1381
+ if( !cgi_header_contains("<base href=") ){
1382
+ @ <p class="generalError">Please add
1383
+ @ <tt>&lt;base href="$baseurl/$current_page"&gt</tt> after
1384
+ @ <tt>&lt;head&gt;</tt> in the header!
1385
+ @ <input type="submit" name="fixbase" value="Add &lt;base&gt; Now"></p>
1386
+ }
1387
+
13491388
login_insert_csrf_secret();
13501389
@ <p>Edit HTML text with embedded TH1 (a TCL dialect) that will be used to
13511390
@ generate the beginning of every page through start of the main
13521391
@ menu.</p>
1353
- textarea_attribute("", 40, 80, "header", "header", zDefaultHeader);
1392
+ textarea_attribute("", 35, 80, "header", "header", zDefaultHeader);
13541393
@ <br />
13551394
@ <input type="submit" name="submit" value="Apply Changes" />
13561395
@ <input type="submit" name="clear" value="Revert To Default" />
13571396
@ </div></form>
13581397
@ <hr />
@@ -1377,13 +1416,12 @@
13771416
}
13781417
db_begin_transaction();
13791418
if( P("clear")!=0 ){
13801419
db_multi_exec("DELETE FROM config WHERE name='footer'");
13811420
cgi_replace_parameter("footer", zDefaultFooter);
1382
- }else{
1383
- textarea_attribute(0, 0, 0, "footer", "footer", zDefaultFooter);
13841421
}
1422
+
13851423
style_header("Edit Page Footer");
13861424
@ <form action="%s(g.zTop)/setup_footer" method="post"><div>
13871425
login_insert_csrf_secret();
13881426
@ <p>Edit HTML text with embedded TH1 (a TCL dialect) that will be used to
13891427
@ generate the end of every page.</p>
@@ -1414,13 +1452,12 @@
14141452
}
14151453
db_begin_transaction();
14161454
if( P("clear")!=0 ){
14171455
db_multi_exec("DELETE FROM config WHERE name GLOB 'adunit*'");
14181456
cgi_replace_parameter("adunit","");
1419
- }else{
1420
- textarea_attribute(0, 0, 0, "adunit", "adunit", "");
14211457
}
1458
+
14221459
style_header("Edit Ad Unit");
14231460
@ <form action="%s(g.zTop)/setup_adunit" method="post"><div>
14241461
login_insert_csrf_secret();
14251462
@ <p>Edit HTML text for an ad unit that will be inserted after the
14261463
@ menu bar and above the content of every page.</p>
14271464
--- src/setup.c
+++ src/setup.c
@@ -57,10 +57,19 @@
57 if( !g.perm.Setup ){
58 login_needed();
59 }
60
61 style_header("Server Administration");
 
 
 
 
 
 
 
 
 
62 @ <table border="0" cellspacing="7">
63 setup_menu_entry("Users", "setup_ulist",
64 "Grant privileges to individual users.");
65 setup_menu_entry("Access", "setup_access",
66 "Control access settings.");
@@ -869,13 +878,15 @@
869 login_verify_csrf_secret();
870 db_set(zVar, zQ, 0);
871 z = zQ;
872 }
873 if( rows>0 && cols>0 ){
874 @ <textarea name="%s(zQP)" rows="%d(rows)" cols="%d(cols)">%h(z)</textarea>
875 if (zLabel && *zLabel)
 
876 @ <span class="textareaLabel">%s(zLabel)</span>
 
877 }
878 }
879
880
881 /*
@@ -1237,15 +1248,21 @@
1237 @ <hr />
1238 entry_attribute("Project Name", 60, "project-name", "pn", "");
1239 @ <p>Give your project a name so visitors know what this site is about.
1240 @ The project name will also be used as the RSS feed title.</p>
1241 @ <hr />
1242 textarea_attribute("Project Description", 5, 60,
1243 "project-description", "pd", "");
1244 @ <p>Describe your project. This will be used in page headers for search
1245 @ engines as well as a short RSS description.</p>
1246 @ <hr />
 
 
 
 
 
 
1247 entry_attribute("Index Page", 60, "index-page", "idxpg", "/home");
1248 @ <p>Enter the pathname of the page to display when the "Home" menu
1249 @ option is selected and when no pathname is
1250 @ specified in the URL. For example, if you visit the url:</p>
1251 @
@@ -1297,22 +1314,21 @@
1297 if( P("clear")!=0 ){
1298 db_multi_exec("DELETE FROM config WHERE name='css'");
1299 cgi_replace_parameter("css", zDefaultCSS);
1300 db_end_transaction(0);
1301 cgi_redirect("setup_editcss");
1302 }else{
1303 textarea_attribute(0, 0, 0, "css", "css", zDefaultCSS);
1304 }
1305 if( P("submit")!=0 ){
 
1306 db_end_transaction(0);
1307 cgi_redirect("setup_editcss");
1308 }
1309 style_header("Edit CSS");
1310 @ <form action="%s(g.zTop)/setup_editcss" method="post"><div>
1311 login_insert_csrf_secret();
1312 @ Edit the CSS below:<br />
1313 textarea_attribute("", 40, 80, "css", "css", zDefaultCSS);
1314 @ <br />
1315 @ <input type="submit" name="submit" value="Apply Changes" />
1316 @ <input type="submit" name="clear" value="Revert To Default" />
1317 @ </div></form>
1318 @ <p><span class="note">Note:</span> Press your browser Reload button after
@@ -1339,20 +1355,43 @@
1339 }
1340 db_begin_transaction();
1341 if( P("clear")!=0 ){
1342 db_multi_exec("DELETE FROM config WHERE name='header'");
1343 cgi_replace_parameter("header", zDefaultHeader);
1344 }else{
1345 textarea_attribute(0, 0, 0, "header", "header", zDefaultHeader);
 
 
 
 
 
 
 
 
 
 
 
 
1346 }
 
1347 style_header("Edit Page Header");
1348 @ <form action="%s(g.zTop)/setup_header" method="post"><div>
 
 
 
 
 
 
 
 
 
 
1349 login_insert_csrf_secret();
1350 @ <p>Edit HTML text with embedded TH1 (a TCL dialect) that will be used to
1351 @ generate the beginning of every page through start of the main
1352 @ menu.</p>
1353 textarea_attribute("", 40, 80, "header", "header", zDefaultHeader);
1354 @ <br />
1355 @ <input type="submit" name="submit" value="Apply Changes" />
1356 @ <input type="submit" name="clear" value="Revert To Default" />
1357 @ </div></form>
1358 @ <hr />
@@ -1377,13 +1416,12 @@
1377 }
1378 db_begin_transaction();
1379 if( P("clear")!=0 ){
1380 db_multi_exec("DELETE FROM config WHERE name='footer'");
1381 cgi_replace_parameter("footer", zDefaultFooter);
1382 }else{
1383 textarea_attribute(0, 0, 0, "footer", "footer", zDefaultFooter);
1384 }
 
1385 style_header("Edit Page Footer");
1386 @ <form action="%s(g.zTop)/setup_footer" method="post"><div>
1387 login_insert_csrf_secret();
1388 @ <p>Edit HTML text with embedded TH1 (a TCL dialect) that will be used to
1389 @ generate the end of every page.</p>
@@ -1414,13 +1452,12 @@
1414 }
1415 db_begin_transaction();
1416 if( P("clear")!=0 ){
1417 db_multi_exec("DELETE FROM config WHERE name GLOB 'adunit*'");
1418 cgi_replace_parameter("adunit","");
1419 }else{
1420 textarea_attribute(0, 0, 0, "adunit", "adunit", "");
1421 }
 
1422 style_header("Edit Ad Unit");
1423 @ <form action="%s(g.zTop)/setup_adunit" method="post"><div>
1424 login_insert_csrf_secret();
1425 @ <p>Edit HTML text for an ad unit that will be inserted after the
1426 @ menu bar and above the content of every page.</p>
1427
--- src/setup.c
+++ src/setup.c
@@ -57,10 +57,19 @@
57 if( !g.perm.Setup ){
58 login_needed();
59 }
60
61 style_header("Server Administration");
62
63 /* Make sure the header contains <base href="...">. Issue a warning
64 ** if it does not. */
65 if( !cgi_header_contains("<base href=") ){
66 @ <p class="generalError"><b>Configuration Error:</b> Please add
67 @ <tt>&lt;base href="$baseurl/$current_page"&gt</tt> after
68 @ <tt>&lt;head&gt;</tt> in the <a href="setup_header">HTML header</a>!</p>
69 }
70
71 @ <table border="0" cellspacing="7">
72 setup_menu_entry("Users", "setup_ulist",
73 "Grant privileges to individual users.");
74 setup_menu_entry("Access", "setup_access",
75 "Control access settings.");
@@ -869,13 +878,15 @@
878 login_verify_csrf_secret();
879 db_set(zVar, zQ, 0);
880 z = zQ;
881 }
882 if( rows>0 && cols>0 ){
883 @ <textarea id="id%s(zQP)" name="%s(zQP)" rows="%d(rows)"
884 @ cols="%d(cols)">%h(z)</textarea>
885 if (zLabel && *zLabel){
886 @ <span class="textareaLabel">%s(zLabel)</span>
887 }
888 }
889 }
890
891
892 /*
@@ -1237,15 +1248,21 @@
1248 @ <hr />
1249 entry_attribute("Project Name", 60, "project-name", "pn", "");
1250 @ <p>Give your project a name so visitors know what this site is about.
1251 @ The project name will also be used as the RSS feed title.</p>
1252 @ <hr />
1253 textarea_attribute("Project Description", 3, 80,
1254 "project-description", "pd", "");
1255 @ <p>Describe your project. This will be used in page headers for search
1256 @ engines as well as a short RSS description.</p>
1257 @ <hr />
1258 onoff_attribute("Enable WYSIWYG Wiki Editing",
1259 "wysiwyg-wiki", "wysiwyg-wiki", 0);
1260 @ <p>Enable what-you-see-is-what-you-get (WYSIWYG) editing of wiki pages.
1261 @ The WYSIWYG editor generates HTML instead of markup, which makes
1262 @ subsequent manual editing more difficult.</p>
1263 @ <hr />
1264 entry_attribute("Index Page", 60, "index-page", "idxpg", "/home");
1265 @ <p>Enter the pathname of the page to display when the "Home" menu
1266 @ option is selected and when no pathname is
1267 @ specified in the URL. For example, if you visit the url:</p>
1268 @
@@ -1297,22 +1314,21 @@
1314 if( P("clear")!=0 ){
1315 db_multi_exec("DELETE FROM config WHERE name='css'");
1316 cgi_replace_parameter("css", zDefaultCSS);
1317 db_end_transaction(0);
1318 cgi_redirect("setup_editcss");
 
 
1319 }
1320 if( P("submit")!=0 ){
1321 textarea_attribute(0, 0, 0, "css", "css", zDefaultCSS);
1322 db_end_transaction(0);
1323 cgi_redirect("setup_editcss");
1324 }
1325 style_header("Edit CSS");
1326 @ <form action="%s(g.zTop)/setup_editcss" method="post"><div>
1327 login_insert_csrf_secret();
1328 @ Edit the CSS below:<br />
1329 textarea_attribute("", 35, 80, "css", "css", zDefaultCSS);
1330 @ <br />
1331 @ <input type="submit" name="submit" value="Apply Changes" />
1332 @ <input type="submit" name="clear" value="Revert To Default" />
1333 @ </div></form>
1334 @ <p><span class="note">Note:</span> Press your browser Reload button after
@@ -1339,20 +1355,43 @@
1355 }
1356 db_begin_transaction();
1357 if( P("clear")!=0 ){
1358 db_multi_exec("DELETE FROM config WHERE name='header'");
1359 cgi_replace_parameter("header", zDefaultHeader);
1360 }else if( P("submit")!=0 ){
1361 textarea_attribute(0, 0, 0, "header", "header", zDefaultHeader);
1362 }else if( P("fixbase")!=0 ){
1363 const char *z = db_get("header", (char*)zDefaultHeader);
1364 char *zHead = strstr(z, "<head>");
1365 if( strstr(z, "<base href=")==0 && zHead!=0 ){
1366 char *zNew;
1367 char *zTail = &zHead[6];
1368 while( fossil_isspace(zTail[0]) ) zTail++;
1369 zNew = mprintf("%.*s\n<base href=\"$baseurl/$current_page\" />\n%s",
1370 zHead+6-z, z, zTail);
1371 cgi_replace_parameter("header", zNew);
1372 db_set("header", zNew, 0);
1373 }
1374 }
1375
1376 style_header("Edit Page Header");
1377 @ <form action="%R/setup_header" method="post"><div>
1378
1379 /* Make sure the header contains <base href="...">. Issue a warning
1380 ** if it does not. */
1381 if( !cgi_header_contains("<base href=") ){
1382 @ <p class="generalError">Please add
1383 @ <tt>&lt;base href="$baseurl/$current_page"&gt</tt> after
1384 @ <tt>&lt;head&gt;</tt> in the header!
1385 @ <input type="submit" name="fixbase" value="Add &lt;base&gt; Now"></p>
1386 }
1387
1388 login_insert_csrf_secret();
1389 @ <p>Edit HTML text with embedded TH1 (a TCL dialect) that will be used to
1390 @ generate the beginning of every page through start of the main
1391 @ menu.</p>
1392 textarea_attribute("", 35, 80, "header", "header", zDefaultHeader);
1393 @ <br />
1394 @ <input type="submit" name="submit" value="Apply Changes" />
1395 @ <input type="submit" name="clear" value="Revert To Default" />
1396 @ </div></form>
1397 @ <hr />
@@ -1377,13 +1416,12 @@
1416 }
1417 db_begin_transaction();
1418 if( P("clear")!=0 ){
1419 db_multi_exec("DELETE FROM config WHERE name='footer'");
1420 cgi_replace_parameter("footer", zDefaultFooter);
 
 
1421 }
1422
1423 style_header("Edit Page Footer");
1424 @ <form action="%s(g.zTop)/setup_footer" method="post"><div>
1425 login_insert_csrf_secret();
1426 @ <p>Edit HTML text with embedded TH1 (a TCL dialect) that will be used to
1427 @ generate the end of every page.</p>
@@ -1414,13 +1452,12 @@
1452 }
1453 db_begin_transaction();
1454 if( P("clear")!=0 ){
1455 db_multi_exec("DELETE FROM config WHERE name GLOB 'adunit*'");
1456 cgi_replace_parameter("adunit","");
 
 
1457 }
1458
1459 style_header("Edit Ad Unit");
1460 @ <form action="%s(g.zTop)/setup_adunit" method="post"><div>
1461 login_insert_csrf_secret();
1462 @ <p>Edit HTML text for an ad unit that will be inserted after the
1463 @ menu bar and above the content of every page.</p>
1464
--- src/skins.c
+++ src/skins.c
@@ -156,10 +156,11 @@
156156
@ text-align: right;
157157
@ padding: 0.2ex 2ex;
158158
@ }');
159159
@ REPLACE INTO config(name,mtime,value) VALUES('header',now(),'<html>
160160
@ <head>
161
+@ <base href="$baseurl/$current_page" />
161162
@ <title>$<project_name>: $<title></title>
162163
@ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
163164
@ href="$home/timeline.rss">
164165
@ <link rel="stylesheet" href="$home/style.css?blackwhite" type="text/css"
165166
@ media="screen">
@@ -358,10 +359,11 @@
358359
@ text-align: right;
359360
@ padding: 0.2ex 2ex;
360361
@ }');
361362
@ REPLACE INTO config(name,mtime,value) VALUES('header',now(),'<html>
362363
@ <head>
364
+@ <base href="$baseurl/$current_page" />
363365
@ <title>$<project_name>: $<title></title>
364366
@ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
365367
@ href="$home/timeline.rss">
366368
@ <link rel="stylesheet" href="$home/style.css?tan" type="text/css"
367369
@ media="screen">
@@ -594,10 +596,11 @@
594596
@ text-align: right;
595597
@ padding: 0.2ex 2ex;
596598
@ }');
597599
@ REPLACE INTO config(name,mtime,value) VALUES('header',now(),'<html>
598600
@ <head>
601
+@ <base href="$baseurl/$current_page" />
599602
@ <title>$<project_name>: $<title></title>
600603
@ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
601604
@ href="$home/timeline.rss">
602605
@ <link rel="stylesheet" href="$home/style.css?black2" type="text/css"
603606
@ media="screen">
@@ -892,10 +895,11 @@
892895
@ textarea {
893896
@ font-size: 1em;
894897
@ }');
895898
@ REPLACE INTO config(name,mtime,value) VALUES('header',now(),'<html>
896899
@ <head>
900
+@ <base href="$baseurl/$current_page" />
897901
@ <title>$<project_name>: $<title></title>
898902
@ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
899903
@ href="$home/timeline.rss">
900904
@ <link rel="stylesheet" href="$home/style.css?black2" type="text/css"
901905
@ media="screen">
902906
--- src/skins.c
+++ src/skins.c
@@ -156,10 +156,11 @@
156 @ text-align: right;
157 @ padding: 0.2ex 2ex;
158 @ }');
159 @ REPLACE INTO config(name,mtime,value) VALUES('header',now(),'<html>
160 @ <head>
 
161 @ <title>$<project_name>: $<title></title>
162 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
163 @ href="$home/timeline.rss">
164 @ <link rel="stylesheet" href="$home/style.css?blackwhite" type="text/css"
165 @ media="screen">
@@ -358,10 +359,11 @@
358 @ text-align: right;
359 @ padding: 0.2ex 2ex;
360 @ }');
361 @ REPLACE INTO config(name,mtime,value) VALUES('header',now(),'<html>
362 @ <head>
 
363 @ <title>$<project_name>: $<title></title>
364 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
365 @ href="$home/timeline.rss">
366 @ <link rel="stylesheet" href="$home/style.css?tan" type="text/css"
367 @ media="screen">
@@ -594,10 +596,11 @@
594 @ text-align: right;
595 @ padding: 0.2ex 2ex;
596 @ }');
597 @ REPLACE INTO config(name,mtime,value) VALUES('header',now(),'<html>
598 @ <head>
 
599 @ <title>$<project_name>: $<title></title>
600 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
601 @ href="$home/timeline.rss">
602 @ <link rel="stylesheet" href="$home/style.css?black2" type="text/css"
603 @ media="screen">
@@ -892,10 +895,11 @@
892 @ textarea {
893 @ font-size: 1em;
894 @ }');
895 @ REPLACE INTO config(name,mtime,value) VALUES('header',now(),'<html>
896 @ <head>
 
897 @ <title>$<project_name>: $<title></title>
898 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
899 @ href="$home/timeline.rss">
900 @ <link rel="stylesheet" href="$home/style.css?black2" type="text/css"
901 @ media="screen">
902
--- src/skins.c
+++ src/skins.c
@@ -156,10 +156,11 @@
156 @ text-align: right;
157 @ padding: 0.2ex 2ex;
158 @ }');
159 @ REPLACE INTO config(name,mtime,value) VALUES('header',now(),'<html>
160 @ <head>
161 @ <base href="$baseurl/$current_page" />
162 @ <title>$<project_name>: $<title></title>
163 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
164 @ href="$home/timeline.rss">
165 @ <link rel="stylesheet" href="$home/style.css?blackwhite" type="text/css"
166 @ media="screen">
@@ -358,10 +359,11 @@
359 @ text-align: right;
360 @ padding: 0.2ex 2ex;
361 @ }');
362 @ REPLACE INTO config(name,mtime,value) VALUES('header',now(),'<html>
363 @ <head>
364 @ <base href="$baseurl/$current_page" />
365 @ <title>$<project_name>: $<title></title>
366 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
367 @ href="$home/timeline.rss">
368 @ <link rel="stylesheet" href="$home/style.css?tan" type="text/css"
369 @ media="screen">
@@ -594,10 +596,11 @@
596 @ text-align: right;
597 @ padding: 0.2ex 2ex;
598 @ }');
599 @ REPLACE INTO config(name,mtime,value) VALUES('header',now(),'<html>
600 @ <head>
601 @ <base href="$baseurl/$current_page" />
602 @ <title>$<project_name>: $<title></title>
603 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
604 @ href="$home/timeline.rss">
605 @ <link rel="stylesheet" href="$home/style.css?black2" type="text/css"
606 @ media="screen">
@@ -892,10 +895,11 @@
895 @ textarea {
896 @ font-size: 1em;
897 @ }');
898 @ REPLACE INTO config(name,mtime,value) VALUES('header',now(),'<html>
899 @ <head>
900 @ <base href="$baseurl/$current_page" />
901 @ <title>$<project_name>: $<title></title>
902 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
903 @ href="$home/timeline.rss">
904 @ <link rel="stylesheet" href="$home/style.css?black2" type="text/css"
905 @ media="screen">
906
+13 -11
--- src/style.c
+++ src/style.c
@@ -203,11 +203,12 @@
203203
g.cgiOutput = 1;
204204
headerHasBeenGenerated = 1;
205205
sideboxUsed = 0;
206206
207207
/* Make the gebi(x) function available as an almost-alias for
208
- ** document.getElementById(x) (except that it throws if the element is not found).
208
+ ** document.getElementById(x) (except that it throws an error
209
+ ** if the element is not found).
209210
**
210211
** Maintenance note: this function must of course be available
211212
** before it is called. It "should" go in the HEAD so that client
212213
** HEAD code can make use of it, but because the client can replace
213214
** the HEAD, and some fossil pages rely on gebi(), we put it here.
@@ -316,10 +317,11 @@
316317
** The default page header.
317318
*/
318319
const char zDefaultHeader[] =
319320
@ <html>
320321
@ <head>
322
+@ <base href="$baseurl/">
321323
@ <title>$<project_name>: $<title></title>
322324
@ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
323325
@ href="$home/timeline.rss" />
324326
@ <link rel="stylesheet" href="$home/style.css?default" type="text/css"
325327
@ media="screen" />
@@ -340,34 +342,34 @@
340342
@ </div>
341343
@ <div class="mainmenu">
342344
@ <th1>
343345
@ html "<a href='$home$index_page'>Home</a>\n"
344346
@ if {[anycap jor]} {
345
-@ html "<a href='$home/timeline'>Timeline</a>\n"
347
+@ html "<a href='timeline'>Timeline</a>\n"
346348
@ }
347349
@ if {[hascap oh]} {
348
-@ html "<a href='$home/dir?ci=tip'>Files</a>\n"
350
+@ html "<a href='dir?ci=tip'>Files</a>\n"
349351
@ }
350352
@ if {[hascap o]} {
351
-@ html "<a href='$home/brlist'>Branches</a>\n"
352
-@ html "<a href='$home/taglist'>Tags</a>\n"
353
+@ html "<a href='brlist'>Branches</a>\n"
354
+@ html "<a href='taglist'>Tags</a>\n"
353355
@ }
354356
@ if {[hascap r]} {
355
-@ html "<a href='$home/reportlist'>Tickets</a>\n"
357
+@ html "<a href='reportlist'>Tickets</a>\n"
356358
@ }
357359
@ if {[hascap j]} {
358
-@ html "<a href='$home/wiki'>Wiki</a>\n"
360
+@ html "<a href='wiki'>Wiki</a>\n"
359361
@ }
360362
@ if {[hascap s]} {
361
-@ html "<a href='$home/setup'>Admin</a>\n"
363
+@ html "<a href='setup'>Admin</a>\n"
362364
@ } elseif {[hascap a]} {
363
-@ html "<a href='$home/setup_ulist'>Users</a>\n"
365
+@ html "<a href='setup_ulist'>Users</a>\n"
364366
@ }
365367
@ if {[info exists login]} {
366
-@ html "<a href='$home/login'>Logout</a>\n"
368
+@ html "<a href='login'>Logout</a>\n"
367369
@ } else {
368
-@ html "<a href='$home/login'>Login</a>\n"
370
+@ html "<a href='login'>Login</a>\n"
369371
@ }
370372
@ </th1></div>
371373
;
372374
373375
/*
374376
--- src/style.c
+++ src/style.c
@@ -203,11 +203,12 @@
203 g.cgiOutput = 1;
204 headerHasBeenGenerated = 1;
205 sideboxUsed = 0;
206
207 /* Make the gebi(x) function available as an almost-alias for
208 ** document.getElementById(x) (except that it throws if the element is not found).
 
209 **
210 ** Maintenance note: this function must of course be available
211 ** before it is called. It "should" go in the HEAD so that client
212 ** HEAD code can make use of it, but because the client can replace
213 ** the HEAD, and some fossil pages rely on gebi(), we put it here.
@@ -316,10 +317,11 @@
316 ** The default page header.
317 */
318 const char zDefaultHeader[] =
319 @ <html>
320 @ <head>
 
321 @ <title>$<project_name>: $<title></title>
322 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
323 @ href="$home/timeline.rss" />
324 @ <link rel="stylesheet" href="$home/style.css?default" type="text/css"
325 @ media="screen" />
@@ -340,34 +342,34 @@
340 @ </div>
341 @ <div class="mainmenu">
342 @ <th1>
343 @ html "<a href='$home$index_page'>Home</a>\n"
344 @ if {[anycap jor]} {
345 @ html "<a href='$home/timeline'>Timeline</a>\n"
346 @ }
347 @ if {[hascap oh]} {
348 @ html "<a href='$home/dir?ci=tip'>Files</a>\n"
349 @ }
350 @ if {[hascap o]} {
351 @ html "<a href='$home/brlist'>Branches</a>\n"
352 @ html "<a href='$home/taglist'>Tags</a>\n"
353 @ }
354 @ if {[hascap r]} {
355 @ html "<a href='$home/reportlist'>Tickets</a>\n"
356 @ }
357 @ if {[hascap j]} {
358 @ html "<a href='$home/wiki'>Wiki</a>\n"
359 @ }
360 @ if {[hascap s]} {
361 @ html "<a href='$home/setup'>Admin</a>\n"
362 @ } elseif {[hascap a]} {
363 @ html "<a href='$home/setup_ulist'>Users</a>\n"
364 @ }
365 @ if {[info exists login]} {
366 @ html "<a href='$home/login'>Logout</a>\n"
367 @ } else {
368 @ html "<a href='$home/login'>Login</a>\n"
369 @ }
370 @ </th1></div>
371 ;
372
373 /*
374
--- src/style.c
+++ src/style.c
@@ -203,11 +203,12 @@
203 g.cgiOutput = 1;
204 headerHasBeenGenerated = 1;
205 sideboxUsed = 0;
206
207 /* Make the gebi(x) function available as an almost-alias for
208 ** document.getElementById(x) (except that it throws an error
209 ** if the element is not found).
210 **
211 ** Maintenance note: this function must of course be available
212 ** before it is called. It "should" go in the HEAD so that client
213 ** HEAD code can make use of it, but because the client can replace
214 ** the HEAD, and some fossil pages rely on gebi(), we put it here.
@@ -316,10 +317,11 @@
317 ** The default page header.
318 */
319 const char zDefaultHeader[] =
320 @ <html>
321 @ <head>
322 @ <base href="$baseurl/">
323 @ <title>$<project_name>: $<title></title>
324 @ <link rel="alternate" type="application/rss+xml" title="RSS Feed"
325 @ href="$home/timeline.rss" />
326 @ <link rel="stylesheet" href="$home/style.css?default" type="text/css"
327 @ media="screen" />
@@ -340,34 +342,34 @@
342 @ </div>
343 @ <div class="mainmenu">
344 @ <th1>
345 @ html "<a href='$home$index_page'>Home</a>\n"
346 @ if {[anycap jor]} {
347 @ html "<a href='timeline'>Timeline</a>\n"
348 @ }
349 @ if {[hascap oh]} {
350 @ html "<a href='dir?ci=tip'>Files</a>\n"
351 @ }
352 @ if {[hascap o]} {
353 @ html "<a href='brlist'>Branches</a>\n"
354 @ html "<a href='taglist'>Tags</a>\n"
355 @ }
356 @ if {[hascap r]} {
357 @ html "<a href='reportlist'>Tickets</a>\n"
358 @ }
359 @ if {[hascap j]} {
360 @ html "<a href='wiki'>Wiki</a>\n"
361 @ }
362 @ if {[hascap s]} {
363 @ html "<a href='setup'>Admin</a>\n"
364 @ } elseif {[hascap a]} {
365 @ html "<a href='setup_ulist'>Users</a>\n"
366 @ }
367 @ if {[info exists login]} {
368 @ html "<a href='login'>Logout</a>\n"
369 @ } else {
370 @ html "<a href='login'>Login</a>\n"
371 @ }
372 @ </th1></div>
373 ;
374
375 /*
376
+60 -14
--- src/wiki.c
+++ src/wiki.c
@@ -185,12 +185,19 @@
185185
zBody = pWiki->zWiki;
186186
}
187187
}
188188
if( !g.isHome ){
189189
if( (rid && g.perm.WrWiki) || (!rid && g.perm.NewWiki) ){
190
- style_submenu_element("Edit", "Edit Wiki Page", "%s/wikiedit?name=%T",
191
- g.zTop, zPageName);
190
+ if( db_get_boolean("wysiwyg-wiki", 0) ){
191
+ style_submenu_element("Edit", "Edit Wiki Page",
192
+ "%s/wikiedit?name=%T&wysiwyg=1",
193
+ g.zTop, zPageName);
194
+ }else{
195
+ style_submenu_element("Edit", "Edit Wiki Page",
196
+ "%s/wikiedit?name=%T",
197
+ g.zTop, zPageName);
198
+ }
192199
}
193200
if( rid && g.perm.ApndWiki && g.perm.Attach ){
194201
style_submenu_element("Attach", "Add An Attachment",
195202
"%s/attachadd?page=%T&from=%s/wiki%%3fname=%T",
196203
g.zTop, zPageName, g.zTop, zPageName);
@@ -260,13 +267,23 @@
260267
const char *zPageName;
261268
char *zHtmlPageName;
262269
int n;
263270
const char *z;
264271
char *zBody = (char*)P("w");
272
+ int isWysiwyg = P("wysiwyg")!=0;
265273
274
+ if( P("edit-wysiwyg")!=0 ){ isWysiwyg = 1; zBody = 0; }
275
+ if( P("edit-markup")!=0 ){ isWysiwyg = 0; zBody = 0; }
266276
if( zBody ){
267
- zBody = mprintf("%s", zBody);
277
+ if( isWysiwyg ){
278
+ Blob body;
279
+ blob_zero(&body);
280
+ htmlTidy(zBody, &body);
281
+ zBody = blob_str(&body);
282
+ }else{
283
+ zBody = mprintf("%s", zBody);
284
+ }
268285
}
269286
login_check_credentials();
270287
zPageName = PD("name","");
271288
if( check_name(zPageName) ) return;
272289
isSandbox = is_sandbox(zPageName);
@@ -336,34 +353,59 @@
336353
if( zBody==0 ){
337354
zBody = mprintf("<i>Empty Page</i>");
338355
}
339356
zHtmlPageName = mprintf("Edit: %s", zPageName);
340357
style_header(zHtmlPageName);
358
+ blob_zero(&wiki);
359
+ blob_append(&wiki, zBody, -1);
341360
if( P("preview")!=0 ){
342
- blob_zero(&wiki);
343
- blob_append(&wiki, zBody, -1);
344361
@ Preview:<hr />
345362
wiki_convert(&wiki, 0, 0);
346363
@ <hr />
347364
blob_reset(&wiki);
348365
}
349366
for(n=2, z=zBody; z[0]; z++){
350367
if( z[0]=='\n' ) n++;
351368
}
352369
if( n<20 ) n = 20;
353
- if( n>40 ) n = 40;
354
- @ <form method="post" action="%s(g.zTop)/wikiedit"><div>
370
+ if( n>30 ) n = 30;
371
+ if( !isWysiwyg ){
372
+ /* Traditional markup-only editing */
373
+ @ <form method="post" action="%s(g.zTop)/wikiedit"><div>
374
+ @ <textarea name="w" class="wikiedit" cols="80"
375
+ @ rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
376
+ @ <br />
377
+ if( db_get_boolean("wysiwyg-wiki", 0) ){
378
+ @ <input type="submit" name="edit-wysiwyg" value="Wysiwyg Editor"
379
+ @ onclick='return confirm("Switching to WYSIWYG-mode\nwill erase your markup\nedits. Continue?")' />
380
+ }
381
+ @ <input type="submit" name="preview" value="Preview Your Changes" />
382
+ }else{
383
+ /* Wysiwyg editing */
384
+ Blob html, temp;
385
+ @ <form method="post" action="%s(g.zTop)/wikiedit"
386
+ @ onsubmit="wysiwygSubmit()"><div>
387
+ @ <input type="hidden" name="wysiwyg" value="1" />
388
+ blob_zero(&temp);
389
+ wiki_convert(&wiki, &temp, 0);
390
+ blob_zero(&html);
391
+ htmlTidy(blob_str(&temp), &html);
392
+ blob_reset(&temp);
393
+ wysiwygEditor("w", blob_str(&html), 60, n);
394
+ blob_reset(&html);
395
+ @ <br />
396
+ @ <input type="submit" name="edit-markup" value="Markup Editor"
397
+ @ onclick='return confirm("Switching to markup-mode\nwill erase your WYSIWYG\nedits. Continue?")' />
398
+ }
399
+ @ <input type="submit" name="submit" value="Apply These Changes" />
355400
login_insert_csrf_secret();
356401
@ <input type="hidden" name="name" value="%h(zPageName)" />
357
- @ <textarea name="w" class="wikiedit" cols="80"
358
- @ rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
359
- @ <br />
360
- @ <input type="submit" name="preview" value="Preview Your Changes" />
361
- @ <input type="submit" name="submit" value="Apply These Changes" />
362
- @ <input type="submit" name="cancel" value="Cancel" />
402
+ @ <input type="submit" name="cancel" value="Cancel"
403
+ @ onclick='confirm("Abandon your changes?")' />
363404
@ </div></form>
364405
manifest_destroy(pWiki);
406
+ blob_reset(&wiki);
365407
style_footer();
366408
}
367409
368410
/*
369411
** WEBPAGE: wikinew
@@ -379,11 +421,15 @@
379421
login_needed();
380422
return;
381423
}
382424
zName = PD("name","");
383425
if( zName[0] && wiki_name_is_wellformed((const unsigned char *)zName) ){
384
- cgi_redirectf("wikiedit?name=%T", zName);
426
+ if( db_get_boolean("wysiwyg-wiki", 0) ){
427
+ cgi_redirectf("wikiedit?name=%T&wysiwyg=1", zName);
428
+ }else{
429
+ cgi_redirectf("wikiedit?name=%T", zName);
430
+ }
385431
}
386432
style_header("Create A New Wiki Page");
387433
@ <p>Rules for wiki page names:</p>
388434
well_formed_wiki_name_rules();
389435
@ <form method="post" action="%s(g.zTop)/wikinew">
390436
--- src/wiki.c
+++ src/wiki.c
@@ -185,12 +185,19 @@
185 zBody = pWiki->zWiki;
186 }
187 }
188 if( !g.isHome ){
189 if( (rid && g.perm.WrWiki) || (!rid && g.perm.NewWiki) ){
190 style_submenu_element("Edit", "Edit Wiki Page", "%s/wikiedit?name=%T",
191 g.zTop, zPageName);
 
 
 
 
 
 
 
192 }
193 if( rid && g.perm.ApndWiki && g.perm.Attach ){
194 style_submenu_element("Attach", "Add An Attachment",
195 "%s/attachadd?page=%T&from=%s/wiki%%3fname=%T",
196 g.zTop, zPageName, g.zTop, zPageName);
@@ -260,13 +267,23 @@
260 const char *zPageName;
261 char *zHtmlPageName;
262 int n;
263 const char *z;
264 char *zBody = (char*)P("w");
 
265
 
 
266 if( zBody ){
267 zBody = mprintf("%s", zBody);
 
 
 
 
 
 
 
268 }
269 login_check_credentials();
270 zPageName = PD("name","");
271 if( check_name(zPageName) ) return;
272 isSandbox = is_sandbox(zPageName);
@@ -336,34 +353,59 @@
336 if( zBody==0 ){
337 zBody = mprintf("<i>Empty Page</i>");
338 }
339 zHtmlPageName = mprintf("Edit: %s", zPageName);
340 style_header(zHtmlPageName);
 
 
341 if( P("preview")!=0 ){
342 blob_zero(&wiki);
343 blob_append(&wiki, zBody, -1);
344 @ Preview:<hr />
345 wiki_convert(&wiki, 0, 0);
346 @ <hr />
347 blob_reset(&wiki);
348 }
349 for(n=2, z=zBody; z[0]; z++){
350 if( z[0]=='\n' ) n++;
351 }
352 if( n<20 ) n = 20;
353 if( n>40 ) n = 40;
354 @ <form method="post" action="%s(g.zTop)/wikiedit"><div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
355 login_insert_csrf_secret();
356 @ <input type="hidden" name="name" value="%h(zPageName)" />
357 @ <textarea name="w" class="wikiedit" cols="80"
358 @ rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
359 @ <br />
360 @ <input type="submit" name="preview" value="Preview Your Changes" />
361 @ <input type="submit" name="submit" value="Apply These Changes" />
362 @ <input type="submit" name="cancel" value="Cancel" />
363 @ </div></form>
364 manifest_destroy(pWiki);
 
365 style_footer();
366 }
367
368 /*
369 ** WEBPAGE: wikinew
@@ -379,11 +421,15 @@
379 login_needed();
380 return;
381 }
382 zName = PD("name","");
383 if( zName[0] && wiki_name_is_wellformed((const unsigned char *)zName) ){
384 cgi_redirectf("wikiedit?name=%T", zName);
 
 
 
 
385 }
386 style_header("Create A New Wiki Page");
387 @ <p>Rules for wiki page names:</p>
388 well_formed_wiki_name_rules();
389 @ <form method="post" action="%s(g.zTop)/wikinew">
390
--- src/wiki.c
+++ src/wiki.c
@@ -185,12 +185,19 @@
185 zBody = pWiki->zWiki;
186 }
187 }
188 if( !g.isHome ){
189 if( (rid && g.perm.WrWiki) || (!rid && g.perm.NewWiki) ){
190 if( db_get_boolean("wysiwyg-wiki", 0) ){
191 style_submenu_element("Edit", "Edit Wiki Page",
192 "%s/wikiedit?name=%T&wysiwyg=1",
193 g.zTop, zPageName);
194 }else{
195 style_submenu_element("Edit", "Edit Wiki Page",
196 "%s/wikiedit?name=%T",
197 g.zTop, zPageName);
198 }
199 }
200 if( rid && g.perm.ApndWiki && g.perm.Attach ){
201 style_submenu_element("Attach", "Add An Attachment",
202 "%s/attachadd?page=%T&from=%s/wiki%%3fname=%T",
203 g.zTop, zPageName, g.zTop, zPageName);
@@ -260,13 +267,23 @@
267 const char *zPageName;
268 char *zHtmlPageName;
269 int n;
270 const char *z;
271 char *zBody = (char*)P("w");
272 int isWysiwyg = P("wysiwyg")!=0;
273
274 if( P("edit-wysiwyg")!=0 ){ isWysiwyg = 1; zBody = 0; }
275 if( P("edit-markup")!=0 ){ isWysiwyg = 0; zBody = 0; }
276 if( zBody ){
277 if( isWysiwyg ){
278 Blob body;
279 blob_zero(&body);
280 htmlTidy(zBody, &body);
281 zBody = blob_str(&body);
282 }else{
283 zBody = mprintf("%s", zBody);
284 }
285 }
286 login_check_credentials();
287 zPageName = PD("name","");
288 if( check_name(zPageName) ) return;
289 isSandbox = is_sandbox(zPageName);
@@ -336,34 +353,59 @@
353 if( zBody==0 ){
354 zBody = mprintf("<i>Empty Page</i>");
355 }
356 zHtmlPageName = mprintf("Edit: %s", zPageName);
357 style_header(zHtmlPageName);
358 blob_zero(&wiki);
359 blob_append(&wiki, zBody, -1);
360 if( P("preview")!=0 ){
 
 
361 @ Preview:<hr />
362 wiki_convert(&wiki, 0, 0);
363 @ <hr />
364 blob_reset(&wiki);
365 }
366 for(n=2, z=zBody; z[0]; z++){
367 if( z[0]=='\n' ) n++;
368 }
369 if( n<20 ) n = 20;
370 if( n>30 ) n = 30;
371 if( !isWysiwyg ){
372 /* Traditional markup-only editing */
373 @ <form method="post" action="%s(g.zTop)/wikiedit"><div>
374 @ <textarea name="w" class="wikiedit" cols="80"
375 @ rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
376 @ <br />
377 if( db_get_boolean("wysiwyg-wiki", 0) ){
378 @ <input type="submit" name="edit-wysiwyg" value="Wysiwyg Editor"
379 @ onclick='return confirm("Switching to WYSIWYG-mode\nwill erase your markup\nedits. Continue?")' />
380 }
381 @ <input type="submit" name="preview" value="Preview Your Changes" />
382 }else{
383 /* Wysiwyg editing */
384 Blob html, temp;
385 @ <form method="post" action="%s(g.zTop)/wikiedit"
386 @ onsubmit="wysiwygSubmit()"><div>
387 @ <input type="hidden" name="wysiwyg" value="1" />
388 blob_zero(&temp);
389 wiki_convert(&wiki, &temp, 0);
390 blob_zero(&html);
391 htmlTidy(blob_str(&temp), &html);
392 blob_reset(&temp);
393 wysiwygEditor("w", blob_str(&html), 60, n);
394 blob_reset(&html);
395 @ <br />
396 @ <input type="submit" name="edit-markup" value="Markup Editor"
397 @ onclick='return confirm("Switching to markup-mode\nwill erase your WYSIWYG\nedits. Continue?")' />
398 }
399 @ <input type="submit" name="submit" value="Apply These Changes" />
400 login_insert_csrf_secret();
401 @ <input type="hidden" name="name" value="%h(zPageName)" />
402 @ <input type="submit" name="cancel" value="Cancel"
403 @ onclick='confirm("Abandon your changes?")' />
 
 
 
 
404 @ </div></form>
405 manifest_destroy(pWiki);
406 blob_reset(&wiki);
407 style_footer();
408 }
409
410 /*
411 ** WEBPAGE: wikinew
@@ -379,11 +421,15 @@
421 login_needed();
422 return;
423 }
424 zName = PD("name","");
425 if( zName[0] && wiki_name_is_wellformed((const unsigned char *)zName) ){
426 if( db_get_boolean("wysiwyg-wiki", 0) ){
427 cgi_redirectf("wikiedit?name=%T&wysiwyg=1", zName);
428 }else{
429 cgi_redirectf("wikiedit?name=%T", zName);
430 }
431 }
432 style_header("Create A New Wiki Page");
433 @ <p>Rules for wiki page names:</p>
434 well_formed_wiki_name_rules();
435 @ <form method="post" action="%s(g.zTop)/wikinew">
436
+153 -6
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1079,20 +1079,20 @@
10791079
*/
10801080
if( isClosed ){
10811081
if( g.perm.Hyperlink ){
10821082
blob_appendf(p->pOut,
10831083
"%z<span class=\"wikiTagCancelled\">[",
1084
- href("%R/info/%s",zTarget)
1084
+ href("info/%s",zTarget)
10851085
);
10861086
zTerm = "]</span></a>";
10871087
}else{
10881088
blob_appendf(p->pOut,"<span class=\"wikiTagCancelled\">[");
10891089
zTerm = "]</span>";
10901090
}
10911091
}else{
10921092
if( g.perm.Hyperlink ){
1093
- blob_appendf(p->pOut,"%z[", href("%R/info/%s", zTarget));
1093
+ blob_appendf(p->pOut,"%z[", href("info/%s", zTarget));
10941094
zTerm = "]</a>";
10951095
}else{
10961096
blob_appendf(p->pOut, "[");
10971097
zTerm = "]";
10981098
}
@@ -1099,22 +1099,22 @@
10991099
}
11001100
}else if( !in_this_repo(zTarget) ){
11011101
blob_appendf(p->pOut, "<span class=\"brokenlink\">[", zTarget);
11021102
zTerm = "]</span>";
11031103
}else if( g.perm.Hyperlink ){
1104
- blob_appendf(p->pOut, "%z[",href("%R/info/%s", zTarget));
1104
+ blob_appendf(p->pOut, "%z[",href("info/%s", zTarget));
11051105
zTerm = "]</a>";
11061106
}
11071107
}else if( strlen(zTarget)>=10 && fossil_isdigit(zTarget[0]) && zTarget[4]=='-'
11081108
&& db_int(0, "SELECT datetime(%Q) NOT NULL", zTarget) ){
1109
- blob_appendf(p->pOut, "<a href=\"%s/timeline?c=%T\">", g.zTop, zTarget);
1109
+ blob_appendf(p->pOut, "<a href=\"timeline?c=%T\">", zTarget);
11101110
}else if( strncmp(zTarget, "wiki:", 5)==0
11111111
&& wiki_name_is_wellformed((const unsigned char*)zTarget) ){
11121112
zTarget += 5;
1113
- blob_appendf(p->pOut, "<a href=\"%s/wiki?name=%T\">", g.zTop, zTarget);
1113
+ blob_appendf(p->pOut, "<a href=\"wiki?name=%T\">", zTarget);
11141114
}else if( wiki_name_is_wellformed((const unsigned char *)zTarget) ){
1115
- blob_appendf(p->pOut, "<a href=\"%s/wiki?name=%T\">", g.zTop, zTarget);
1115
+ blob_appendf(p->pOut, "<a href=\"wiki?name=%T\">", zTarget);
11161116
}else{
11171117
blob_appendf(p->pOut, "<span class=\"brokenlink\">[%h]</span>", zTarget);
11181118
zTerm = "";
11191119
}
11201120
assert( strlen(zTerm)<nClose );
@@ -1747,5 +1747,152 @@
17471747
}
17481748
z += n;
17491749
}
17501750
free(renderer.aStack);
17511751
}
1752
+
1753
+/*
1754
+** Get the next HTML token.
1755
+**
1756
+** z points to the start of a token. Return the number of
1757
+** characters in that token.
1758
+*/
1759
+static int nextHtmlToken(const char *z){
1760
+ int n;
1761
+ if( z[0]=='<' ){
1762
+ n = markupLength(z);
1763
+ if( n<=0 ) n = 1;
1764
+ }else if( fossil_isspace(z[0]) ){
1765
+ for(n=1; z[n] && fossil_isspace(z[n]); n++){}
1766
+ }else{
1767
+ for(n=1; z[n] && z[n]!='<' && !fossil_isspace(z[n]); n++){}
1768
+ }
1769
+ return n;
1770
+}
1771
+
1772
+/*
1773
+** Return true if z[] is the word zWord in any case.
1774
+*/
1775
+static int isWord(const char *z, const char *zWord, int nWord){
1776
+ return fossil_strnicmp(z, zWord, nWord)==0 && !fossil_isalpha(z[nWord]);
1777
+}
1778
+
1779
+/*
1780
+** Attempt to reformat messy HTML to be easily readable by humans.
1781
+**
1782
+** * Try to keep lines less than 80 characters in length
1783
+** * Collapse white space into a single space
1784
+** * Put a blank line before:
1785
+** <blockquote><center><code><hN><p><pre><table>
1786
+** * Put a newline after <br> and <hr>
1787
+** * Start each of the following elements on a new line:
1788
+** <address><cite><dd><div><dl><dt><li><ol><samp>
1789
+** <tbody><td><tfoot><th><thead><tr><ul>
1790
+**
1791
+** Except, do not do any reformatting inside of <pre>...</pre>
1792
+*/
1793
+void htmlTidy(const char *zIn, Blob *pOut){
1794
+ int n;
1795
+ int nPre = 0;
1796
+ int iCur = 0;
1797
+ int wantSpace = 0;
1798
+ int omitSpace = 1;
1799
+ while( zIn[0] ){
1800
+ n = nextHtmlToken(zIn);
1801
+ if( zIn[0]=='<' && n>1 ){
1802
+ int i, j;
1803
+ int isCloseTag;
1804
+ int eTag;
1805
+ int eType;
1806
+ char zTag[32];
1807
+ isCloseTag = zIn[1]=='/';
1808
+ for(i=0, j=1+isCloseTag; i<30 && fossil_isalnum(zIn[j]); i++, j++){
1809
+ zTag[i] = fossil_tolower(zIn[j]);
1810
+ }
1811
+ zTag[i] = 0;
1812
+ eTag = findTag(zTag);
1813
+ eType = aMarkup[eTag].iType;
1814
+ if( eTag==MARKUP_PRE ){
1815
+ if( isCloseTag ){
1816
+ nPre--;
1817
+ blob_append(pOut, zIn, n);
1818
+ zIn += n;
1819
+ if( nPre==0 ){ blob_append(pOut, "\n", 1); iCur = 0; }
1820
+ continue;
1821
+ }else{
1822
+ if( iCur && nPre==0 ){ blob_append(pOut, "\n", 1); iCur = 0; }
1823
+ nPre++;
1824
+ }
1825
+ }else if( eType & (MUTYPE_BLOCK|MUTYPE_TABLE) ){
1826
+ if( !isCloseTag && nPre==0 && blob_size(pOut)>0 ){
1827
+ blob_append(pOut, "\n\n", 1 + (iCur>0));
1828
+ iCur = 0;
1829
+ }
1830
+ wantSpace = 0;
1831
+ omitSpace = 1;
1832
+ }else if( (eType & (MUTYPE_LIST|MUTYPE_LI|MUTYPE_TR|MUTYPE_TD))!=0
1833
+ || eTag==MARKUP_HR
1834
+ ){
1835
+ if( nPre==0 && (!isCloseTag || (eType&MUTYPE_LIST)!=0) && iCur>0 ){
1836
+ blob_append(pOut, "\n", 1);
1837
+ iCur = 0;
1838
+ }
1839
+ wantSpace = 0;
1840
+ omitSpace = 1;
1841
+ }
1842
+ if( wantSpace && nPre==0 ){
1843
+ if( iCur+n+1>=80 ){
1844
+ blob_append(pOut, "\n", 1);
1845
+ iCur = 0;
1846
+ }else{
1847
+ blob_append(pOut, " ", 1);
1848
+ iCur++;
1849
+ }
1850
+ }
1851
+ blob_append(pOut, zIn, n);
1852
+ iCur += n;
1853
+ wantSpace = 0;
1854
+ if( eTag==MARKUP_BR || eTag==MARKUP_HR ){
1855
+ blob_append(pOut, "\n", 1);
1856
+ iCur = 0;
1857
+ }
1858
+ }else if( fossil_isspace(zIn[0]) ){
1859
+ if( nPre ){
1860
+ blob_append(pOut, zIn, n);
1861
+ }else{
1862
+ wantSpace = !omitSpace;
1863
+ }
1864
+ }else{
1865
+ if( wantSpace && nPre==0 ){
1866
+ if( iCur+n+1>=80 ){
1867
+ blob_append(pOut, "\n", 1);
1868
+ iCur = 0;
1869
+ }else{
1870
+ blob_append(pOut, " ", 1);
1871
+ iCur++;
1872
+ }
1873
+ }
1874
+ blob_append(pOut, zIn, n);
1875
+ iCur += n;
1876
+ wantSpace = omitSpace = 0;
1877
+ }
1878
+ zIn += n;
1879
+ }
1880
+ if( iCur ) blob_append(pOut, "\n", 1);
1881
+}
1882
+
1883
+/*
1884
+** COMMAND: test-html-tidy
1885
+*/
1886
+void test_html_tidy(void){
1887
+ Blob in, out;
1888
+ int i;
1889
+
1890
+ for(i=2; i<g.argc; i++){
1891
+ blob_read_from_file(&in, g.argv[i]);
1892
+ blob_zero(&out);
1893
+ htmlTidy(blob_str(&in), &out);
1894
+ blob_reset(&in);
1895
+ fossil_puts(blob_str(&out), 0);
1896
+ blob_reset(&out);
1897
+ }
1898
+}
17521899
17531900
ADDED src/wysiwyg.c
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1079,20 +1079,20 @@
1079 */
1080 if( isClosed ){
1081 if( g.perm.Hyperlink ){
1082 blob_appendf(p->pOut,
1083 "%z<span class=\"wikiTagCancelled\">[",
1084 href("%R/info/%s",zTarget)
1085 );
1086 zTerm = "]</span></a>";
1087 }else{
1088 blob_appendf(p->pOut,"<span class=\"wikiTagCancelled\">[");
1089 zTerm = "]</span>";
1090 }
1091 }else{
1092 if( g.perm.Hyperlink ){
1093 blob_appendf(p->pOut,"%z[", href("%R/info/%s", zTarget));
1094 zTerm = "]</a>";
1095 }else{
1096 blob_appendf(p->pOut, "[");
1097 zTerm = "]";
1098 }
@@ -1099,22 +1099,22 @@
1099 }
1100 }else if( !in_this_repo(zTarget) ){
1101 blob_appendf(p->pOut, "<span class=\"brokenlink\">[", zTarget);
1102 zTerm = "]</span>";
1103 }else if( g.perm.Hyperlink ){
1104 blob_appendf(p->pOut, "%z[",href("%R/info/%s", zTarget));
1105 zTerm = "]</a>";
1106 }
1107 }else if( strlen(zTarget)>=10 && fossil_isdigit(zTarget[0]) && zTarget[4]=='-'
1108 && db_int(0, "SELECT datetime(%Q) NOT NULL", zTarget) ){
1109 blob_appendf(p->pOut, "<a href=\"%s/timeline?c=%T\">", g.zTop, zTarget);
1110 }else if( strncmp(zTarget, "wiki:", 5)==0
1111 && wiki_name_is_wellformed((const unsigned char*)zTarget) ){
1112 zTarget += 5;
1113 blob_appendf(p->pOut, "<a href=\"%s/wiki?name=%T\">", g.zTop, zTarget);
1114 }else if( wiki_name_is_wellformed((const unsigned char *)zTarget) ){
1115 blob_appendf(p->pOut, "<a href=\"%s/wiki?name=%T\">", g.zTop, zTarget);
1116 }else{
1117 blob_appendf(p->pOut, "<span class=\"brokenlink\">[%h]</span>", zTarget);
1118 zTerm = "";
1119 }
1120 assert( strlen(zTerm)<nClose );
@@ -1747,5 +1747,152 @@
1747 }
1748 z += n;
1749 }
1750 free(renderer.aStack);
1751 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1752
1753 DDED src/wysiwyg.c
--- src/wikiformat.c
+++ src/wikiformat.c
@@ -1079,20 +1079,20 @@
1079 */
1080 if( isClosed ){
1081 if( g.perm.Hyperlink ){
1082 blob_appendf(p->pOut,
1083 "%z<span class=\"wikiTagCancelled\">[",
1084 href("info/%s",zTarget)
1085 );
1086 zTerm = "]</span></a>";
1087 }else{
1088 blob_appendf(p->pOut,"<span class=\"wikiTagCancelled\">[");
1089 zTerm = "]</span>";
1090 }
1091 }else{
1092 if( g.perm.Hyperlink ){
1093 blob_appendf(p->pOut,"%z[", href("info/%s", zTarget));
1094 zTerm = "]</a>";
1095 }else{
1096 blob_appendf(p->pOut, "[");
1097 zTerm = "]";
1098 }
@@ -1099,22 +1099,22 @@
1099 }
1100 }else if( !in_this_repo(zTarget) ){
1101 blob_appendf(p->pOut, "<span class=\"brokenlink\">[", zTarget);
1102 zTerm = "]</span>";
1103 }else if( g.perm.Hyperlink ){
1104 blob_appendf(p->pOut, "%z[",href("info/%s", zTarget));
1105 zTerm = "]</a>";
1106 }
1107 }else if( strlen(zTarget)>=10 && fossil_isdigit(zTarget[0]) && zTarget[4]=='-'
1108 && db_int(0, "SELECT datetime(%Q) NOT NULL", zTarget) ){
1109 blob_appendf(p->pOut, "<a href=\"timeline?c=%T\">", zTarget);
1110 }else if( strncmp(zTarget, "wiki:", 5)==0
1111 && wiki_name_is_wellformed((const unsigned char*)zTarget) ){
1112 zTarget += 5;
1113 blob_appendf(p->pOut, "<a href=\"wiki?name=%T\">", zTarget);
1114 }else if( wiki_name_is_wellformed((const unsigned char *)zTarget) ){
1115 blob_appendf(p->pOut, "<a href=\"wiki?name=%T\">", zTarget);
1116 }else{
1117 blob_appendf(p->pOut, "<span class=\"brokenlink\">[%h]</span>", zTarget);
1118 zTerm = "";
1119 }
1120 assert( strlen(zTerm)<nClose );
@@ -1747,5 +1747,152 @@
1747 }
1748 z += n;
1749 }
1750 free(renderer.aStack);
1751 }
1752
1753 /*
1754 ** Get the next HTML token.
1755 **
1756 ** z points to the start of a token. Return the number of
1757 ** characters in that token.
1758 */
1759 static int nextHtmlToken(const char *z){
1760 int n;
1761 if( z[0]=='<' ){
1762 n = markupLength(z);
1763 if( n<=0 ) n = 1;
1764 }else if( fossil_isspace(z[0]) ){
1765 for(n=1; z[n] && fossil_isspace(z[n]); n++){}
1766 }else{
1767 for(n=1; z[n] && z[n]!='<' && !fossil_isspace(z[n]); n++){}
1768 }
1769 return n;
1770 }
1771
1772 /*
1773 ** Return true if z[] is the word zWord in any case.
1774 */
1775 static int isWord(const char *z, const char *zWord, int nWord){
1776 return fossil_strnicmp(z, zWord, nWord)==0 && !fossil_isalpha(z[nWord]);
1777 }
1778
1779 /*
1780 ** Attempt to reformat messy HTML to be easily readable by humans.
1781 **
1782 ** * Try to keep lines less than 80 characters in length
1783 ** * Collapse white space into a single space
1784 ** * Put a blank line before:
1785 ** <blockquote><center><code><hN><p><pre><table>
1786 ** * Put a newline after <br> and <hr>
1787 ** * Start each of the following elements on a new line:
1788 ** <address><cite><dd><div><dl><dt><li><ol><samp>
1789 ** <tbody><td><tfoot><th><thead><tr><ul>
1790 **
1791 ** Except, do not do any reformatting inside of <pre>...</pre>
1792 */
1793 void htmlTidy(const char *zIn, Blob *pOut){
1794 int n;
1795 int nPre = 0;
1796 int iCur = 0;
1797 int wantSpace = 0;
1798 int omitSpace = 1;
1799 while( zIn[0] ){
1800 n = nextHtmlToken(zIn);
1801 if( zIn[0]=='<' && n>1 ){
1802 int i, j;
1803 int isCloseTag;
1804 int eTag;
1805 int eType;
1806 char zTag[32];
1807 isCloseTag = zIn[1]=='/';
1808 for(i=0, j=1+isCloseTag; i<30 && fossil_isalnum(zIn[j]); i++, j++){
1809 zTag[i] = fossil_tolower(zIn[j]);
1810 }
1811 zTag[i] = 0;
1812 eTag = findTag(zTag);
1813 eType = aMarkup[eTag].iType;
1814 if( eTag==MARKUP_PRE ){
1815 if( isCloseTag ){
1816 nPre--;
1817 blob_append(pOut, zIn, n);
1818 zIn += n;
1819 if( nPre==0 ){ blob_append(pOut, "\n", 1); iCur = 0; }
1820 continue;
1821 }else{
1822 if( iCur && nPre==0 ){ blob_append(pOut, "\n", 1); iCur = 0; }
1823 nPre++;
1824 }
1825 }else if( eType & (MUTYPE_BLOCK|MUTYPE_TABLE) ){
1826 if( !isCloseTag && nPre==0 && blob_size(pOut)>0 ){
1827 blob_append(pOut, "\n\n", 1 + (iCur>0));
1828 iCur = 0;
1829 }
1830 wantSpace = 0;
1831 omitSpace = 1;
1832 }else if( (eType & (MUTYPE_LIST|MUTYPE_LI|MUTYPE_TR|MUTYPE_TD))!=0
1833 || eTag==MARKUP_HR
1834 ){
1835 if( nPre==0 && (!isCloseTag || (eType&MUTYPE_LIST)!=0) && iCur>0 ){
1836 blob_append(pOut, "\n", 1);
1837 iCur = 0;
1838 }
1839 wantSpace = 0;
1840 omitSpace = 1;
1841 }
1842 if( wantSpace && nPre==0 ){
1843 if( iCur+n+1>=80 ){
1844 blob_append(pOut, "\n", 1);
1845 iCur = 0;
1846 }else{
1847 blob_append(pOut, " ", 1);
1848 iCur++;
1849 }
1850 }
1851 blob_append(pOut, zIn, n);
1852 iCur += n;
1853 wantSpace = 0;
1854 if( eTag==MARKUP_BR || eTag==MARKUP_HR ){
1855 blob_append(pOut, "\n", 1);
1856 iCur = 0;
1857 }
1858 }else if( fossil_isspace(zIn[0]) ){
1859 if( nPre ){
1860 blob_append(pOut, zIn, n);
1861 }else{
1862 wantSpace = !omitSpace;
1863 }
1864 }else{
1865 if( wantSpace && nPre==0 ){
1866 if( iCur+n+1>=80 ){
1867 blob_append(pOut, "\n", 1);
1868 iCur = 0;
1869 }else{
1870 blob_append(pOut, " ", 1);
1871 iCur++;
1872 }
1873 }
1874 blob_append(pOut, zIn, n);
1875 iCur += n;
1876 wantSpace = omitSpace = 0;
1877 }
1878 zIn += n;
1879 }
1880 if( iCur ) blob_append(pOut, "\n", 1);
1881 }
1882
1883 /*
1884 ** COMMAND: test-html-tidy
1885 */
1886 void test_html_tidy(void){
1887 Blob in, out;
1888 int i;
1889
1890 for(i=2; i<g.argc; i++){
1891 blob_read_from_file(&in, g.argv[i]);
1892 blob_zero(&out);
1893 htmlTidy(blob_str(&in), &out);
1894 blob_reset(&in);
1895 fossil_puts(blob_str(&out), 0);
1896 blob_reset(&out);
1897 }
1898 }
1899
1900 DDED src/wysiwyg.c
+252
--- a/src/wysiwyg.c
+++ b/src/wysiwyg.c
@@ -0,0 +1,252 @@
1
+/*
2
+** Copyright (c) 2012 D. Richard Hipp
3
+**
4
+** This program is free software; you can redistribute it and/or
5
+** modify it under the terms of the Simplified BSD License (also
6
+** known as the "2-Clause License" or "FreeBSD License".)
7
+**
8
+** This program is distributed in the hope that it will be useful,
9
+** but without any warranty; without even the implied warranty of
10
+** merchantability or fitness for a particular purpose.
11
+**
12
+** Author contact information:
13
+** [email protected]
14
+** http://www.hwaci.com/drh/
15
+**
16
+*******************************************************************************
17
+**
18
+** This file contains code that generates WYSIWYG text editors on<assert.h>
19
+#i** web pages.
20
+*/
21
+#iinclude <ctype.h>
22
+#include "wysiwyg.h"
23
+
24
+
25
+/*
26
+** Output code for a WYSIWYG editor. The caller must have already generated
27
+** the <form> that will contain the editor, and the call must generate the
28
+** corresponding </form> after this routine returns. The caller must include
29
+** an onsubmit= attribute on the <form> element that invokes the
30
+** wysiwygSubmit() function.
31
+**
32
+** There can only be a single WYSIWYG editor per frame.
33
+*/
34
+void wysiwygEditor(
35
+ const char *zId, /* ID for this editor */
36
+ const char *zContent, /* Initial content (HTML) */
37
+ int w, int h /* Initial width and height */
38
+){
39
+
40
+ @ <style type="text/css">
41
+ @ .intLink { cursor: pointer; }
42
+ @ img.intLink { border: 0; }
43
+ @ #wysiwygBox {
44
+ @ border: 1px #000000 solid;
45
+ @ padding: 12px;
46
+ @ }
47
+ @ #editMode label { cursor: pointer; }
48
+ @ </style>
49
+
50
+ @ <input id="wysiwygValue" type="hidden" name="%s(zId)">
51
+ @ <div id="editModeDiv">Edit mode:
52
+ @ <select id="editMode" size=1 onchange="/yH5BAEAAB8ALAAAAAAWABYAAAVu4C"
53
+** wysiwygSubmit() fsize=1>
54
+ @ <option value="0">WYSIWYG</option>
55
+ @ <option value="1">Raw HTML</option>
56
+ onchange="formatDoc('formatblock'BeVSus2CgrCxHptLBbO CxHptLBbOQxCSNCCaF1GUqwQbBd=0;">
57
+ @ <option selected>- formatting -</option>
58
+ @ <option value="h1">Title 1 &lt;h1&gt;</option>
59
+ @ <option value="h2">Title 2 &lt;h2&gt;</option>
60
+ @ <option value="h3">Title 3 &lt;h3&gt;</option>
61
+ @ <option value="h4">Title 4 &lt;h4&gt;</option>
62
+ @ <option value="h5">Title 5 &lt;h5&gt;</option>
63
+ @ <option value="h6">Subtitle &lt;h6&gt;</option>
64
+ @ <option value="p">Paragraph &lt;p&gt;</option>
65
+ @ <option value="pre">Preformatted &lt;pre&gt;</option>onchange="formatDoc('fontname'BeVSus2CgrCxHptLBbO CxHptLBbOQxCSNCCaF1GUqwQbBd=0;b pages.
66
+*/
67
+#include "config.h"
68
+#include <assert.h>
69
+#include <ctype.h>
70
+#include "wysiwyg.h"
71
+
72
+
73
+/*
74
+** Output code for a WYSIWYG editor. The caller must have already generated
75
+** the <form> that will contain the editonchange="formatDoc('fontsize'BeVSus2CgrCxHptLBbO CxHptLBbOQxCSNCCaF1GUqwQbBd=0;b pages.
76
+*/
77
+#in </form> after this routine returns. The caller must include
78
+** an onsubmit= attribute on the <form> element that invokes the
79
+** wysiwygSubmit() function.
80
+**
81
+** There can only be a single WYSIWYG editor per frame.
82
+*/
83
+void wysiwygEditor(
84
+ const char *zId, /* ID for this editor */
85
+ const char *zContent, /* Initionchange="formatDoc('forecolor'BeVSus2CgrCxHptLBbO CxHptLBbOQxCSNCCaF1GUqwQbBd=0;b pages.
86
+*/
87
+#ins">
88
+ @ .intLink { cursor: pointer; }
89
+ @ img.intLink { border: 0; }
90
+ @ #wysiwygBox {
91
+ @ border: 1px #000000 solid;
92
+ @ padding: 12px;
93
+ @ }
94
+ @ #editMode label { cursor: pointer; }
95
+ @ </style>
96
+
97
+ @ <input id="wysiwygValue" type="hidden" name="%s(zId)">
98
+ onclick="formatDoc('undo');"
99
+ @ src="data:ima size=1>
100
+ @ <option value="0">WYSIWYG</option>
101
+ @ <option value="1">Raw HTML</option>
102
+ @ </select></div>
103
+ @ <div id="toolBar1">
104
+ @ <select class="format" data-format="formatblock">
105
+ @ <option selected>- formatting -</option>
106
+ @ <option value="h1">Title 1 &lonclick="formatDoc('redo');"
107
+ @ src="data:imation>
108
+ @ <option value="h3">Title 3 &lt;h3&gt;</option>
109
+ @ <option value="h4">Title 4 &lt;h4&gt;</option>
110
+ @ <option value="h5">Title 5 &lt;h5&gt;</option>
111
+ @ <option value="h6">Subtitle &lt;h6&gt;</o
112
+ @ onclick"
113
+ @ src="data:image/</option>
114
+ @ <option value="pre">Preformatted &lt;pre&gt;</option>
115
+ @ </select>
116
+ @ <select class="format" data-format="fontname">
117
+ @ <option class="heading" selected>- font -</option>
118
+ @ <option>Arial</option>
119
+ @ <option>Arial Black</option>
120
+ @ <option>Courier New</option>
121
+ @ <option>Times New Roman</option>
122
+ @ </select>
123
+ @ <select class="format" data-format="fontsize">
124
+ @ <option class="heading" selected>- size -</option>
125
+ @ <option value="1">Very small</option>
126
+ @ <option value="2">A bit small</option>
127
+ @ <option value="3">Normal</option>
128
+ @ <option value="4">Medium-large</option>
129
+ @ <option value="5">Big</option>
130
+ @ <option value="6">Very big</option>
131
+ @ <option value="7">Maximum</option>
132
+ @ </select>
133
+ @ <select class="format" data-format="forecolor">
134
+ @ <option class="heading" selected>- color -</option>
135
+ @ <option value="red">Red</option>
136
+ @ <option value="blue">Blue</option>
137
+ @ <option value="green">Green</option>
138
+ @ <option value="black">Black</option>
139
+ @ </select>
140
+ @ </div>
141
+ @ <div id="toolBar2">
142
+ @ <img class="intLink" title="Undo" data-format="undo"
143
+ @ src="data:image/gif;base64,R0lGODlhFgAWAOMKADljwliE33mOrpGjuYKl8aezxqPD+7
144
+ @ /I19DV3NHa7P///////////////////////yH5BAEKAA8ALAAAAAAWABYAAARR8MlJq704680
145
+ @ 7TkaYeJJBnES4EeUJvIGapWYAC0CsocQ7SDlWonclick="formatDoc('bold');"
146
+ @ src="data:imagD/AMDAwAAAACH5BnhI+pa+H9mJy0LhdgtrxzDG5WGFVk6aXqyk6Y9kXvKKNuLbb6zgMFADs=" />
147
+
148
+ @ <img clasonclick="formatDoc('italic');"
149
+ @ src="data:image/gif;base64,R0lGODlhFgAWAKEDAAAAAF9vj5WIbf///yH5BAEAAAMALA
150
+ @ AAAAAWABYAAAIjnI+py+0Po5x0gXvruEKHrF2BB1YiCWgbMFIYpsbyTNd2UwAAOw==" />
151
+
152
+ @ <img class="onclick="formatDoc('underline');"
153
+ @ src="data:imaKECAAAAAF9vj////////yH5BAEAAAIALA
154
+ @ AAAAAWABYAAAIrlI+py+0Po5zUgAsEzvEeL4Ea15EiJJ5PSqJmuwKBEKgxVuXWtun+DwxCCgA
155
+ @ 7" />
156
+
157
+ @ <img class="
158
+ @ onclick try the"useCSS", 0, true); } // IE9/10
159
+ @ catch (e) { } D License (also
160
+** known as the "2-Clause License" or "FreeBSD License".)
161
+**
162
+** This program is distributed in the hope that it will be useful,
163
+** but without any warranty; without even the implied warranty of
164
+** merchantability or fitness for a particular purpose.
165
+**
166
+** Author contact information:
167
+** [email protected]
168
+** http://www.hwacAdd************************************************************
169
+**
170
+** This file contains code that generates WYSIWYG text editors on
171
+** web pages.
172
+*/
173
+#include "config.h"
174
+#include <assert.h>
175
+#include <ctype.h>
176
+#include "wysiwyg.h"
177
+
178
+
179
+/*
180
+** Output code for a WYSIWYG editor. The caller *****************indenI+pa+H9mJy0LhdgtrxzDG5W
181
+ @ #wysiwygBox {
182
+ @ border: 1px #000000 solid;
183
+ @ padding: 12px;
184
+ @ }
185
+ @ #editMode label { cursor: pointer; }
186
+ @ </style>
187
+
188
+ @ <input id="wysiwygValue" type="hidden" name="%s(zId)">
189
+ @ <div id="editModeDiv">Edit mode:
190
+ @ <select id="editMode" size=1 onchange="/yH5BAEAAB8ALAAAAAAWABYAAAVu4C"
191
+** wysiwygSubmit() fsize=1>
192
+ @ <option value="0">WYSIWYG</option>
193
+ @ <option value="1">Raw HTML</option>
194
+ onchange="formatDoc('formatblock'BeVSus2CgrCxHptLBbO CxHptLBbOQxCSNCCaF1GUqwQbBd=0;">
195
+ @ <option selected>- formatting -</option>
196
+ @ <option value="h1">Title 1 &lt;h1&gt;</option>
197
+ @ <option value="h2">Title 2 &lt;h2&gt;</option>
198
+ @ <option value="h3">Title 3 &lt;h3&gt;</option>
199
+ @ <option value="h4">Title 4 &lt;h4&gt;</option>
200
+ @ <option value="h5">Title 5 &lt;h5&gt;</option>
201
+ @ <option value="h6">Subtitle &lt;h6&gt;</option>
202
+ @ <option value="p">Paragraph &lt;p&gt;</option>
203
+ @ <option value="pre">Preformatted &lt;pre&gt;</option>onchange="formatDoc('fontname'BeVSus2CgrCxHptLBbO CxHptLBbOQxCSNCCaF1GUqwQbBd=0;b pages.
204
+*/
205
+#include "config.h"
206
+#include <assert.h>
207
+#include <ctype.h>
208
+#include "wysiwyg.h"
209
+
210
+
211
+/*
212
+** Output code for a WYSIWYG editor. The caller must have already generated
213
+** the <form> that will contain the editonchange="formatDoc('fontsize'BeVSus2CgrCxHptLBbO CxHptLBbOQxCSNCCaF1GUqwQbBd=0;b pages.
214
+*/
215
+#in </form> after this routine returns. The caller must include
216
+** an onsubmit= attribute on the <form> element that invokes the
217
+** wysiwygSubmit() function.
218
+**
219
+** There can only be a single WYSIWYG editor per frame.
220
+*/
221
+void wysiwygEditor(
222
+ const char *zId, /* ID for this editor */
223
+ const char *zContent, /* Initionchange="formatDoc('forecolor'BeVSus2CgrCxHptLBbO CxHptLBbOQxCSNCCaF1GUqwQbBd=0;b pages.
224
+*/
225
+#ins">
226
+ @ .intLink { cursor: pointer; }
227
+ @ img.intLink { border: 0; }
228
+ @ #wysiwygBox {
229
+ @ border: 1px #000000 solid;
230
+ @ padding: 12px;
231
+ @ }
232
+ @ #editMode label { cursor: pointer; }
233
+ @ </style>
234
+
235
+ @ <input id="wysiwygValue" type="hidden" name="%s(zId)">
236
+ onclick="formatDoc('undo');"
237
+ @ src="data:ima size=1>
238
+ @ <option value="0">WYSIWYG</option>
239
+ @ <option value="1">Raw HTML</option>
240
+ @ </select></div>
241
+ @ <div id="toolBar1">
242
+ @ <select class="format" data-format="formatblock">
243
+ @ <option selected>- formatting -</option>
244
+ @ <option value="h1">Title 1 &lonclick="formatDoc('redo');"
245
+ @ src="data:imation>
246
+ @ <option value="h3">Title 3 &lt;h3&gt;</option>
247
+ @ <option value="h4">Title 4 &lt;h4&gt;</option>
248
+ @ <option value="h5">Title 5 &lt;h5&gt;</option>
249
+ @ <option value="h6">Subtitle &lt;h6&gt;</o
250
+ @ onclick"
251
+ @ src="data:image/</option>
252
+ @ <option value="pre">Preformatted &lt;pre&gt;</option>
--- a/src/wysiwyg.c
+++ b/src/wysiwyg.c
@@ -0,0 +1,252 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/src/wysiwyg.c
+++ b/src/wysiwyg.c
@@ -0,0 +1,252 @@
1 /*
2 ** Copyright (c) 2012 D. Richard Hipp
3 **
4 ** This program is free software; you can redistribute it and/or
5 ** modify it under the terms of the Simplified BSD License (also
6 ** known as the "2-Clause License" or "FreeBSD License".)
7 **
8 ** This program is distributed in the hope that it will be useful,
9 ** but without any warranty; without even the implied warranty of
10 ** merchantability or fitness for a particular purpose.
11 **
12 ** Author contact information:
13 ** [email protected]
14 ** http://www.hwaci.com/drh/
15 **
16 *******************************************************************************
17 **
18 ** This file contains code that generates WYSIWYG text editors on<assert.h>
19 #i** web pages.
20 */
21 #iinclude <ctype.h>
22 #include "wysiwyg.h"
23
24
25 /*
26 ** Output code for a WYSIWYG editor. The caller must have already generated
27 ** the <form> that will contain the editor, and the call must generate the
28 ** corresponding </form> after this routine returns. The caller must include
29 ** an onsubmit= attribute on the <form> element that invokes the
30 ** wysiwygSubmit() function.
31 **
32 ** There can only be a single WYSIWYG editor per frame.
33 */
34 void wysiwygEditor(
35 const char *zId, /* ID for this editor */
36 const char *zContent, /* Initial content (HTML) */
37 int w, int h /* Initial width and height */
38 ){
39
40 @ <style type="text/css">
41 @ .intLink { cursor: pointer; }
42 @ img.intLink { border: 0; }
43 @ #wysiwygBox {
44 @ border: 1px #000000 solid;
45 @ padding: 12px;
46 @ }
47 @ #editMode label { cursor: pointer; }
48 @ </style>
49
50 @ <input id="wysiwygValue" type="hidden" name="%s(zId)">
51 @ <div id="editModeDiv">Edit mode:
52 @ <select id="editMode" size=1 onchange="/yH5BAEAAB8ALAAAAAAWABYAAAVu4C"
53 ** wysiwygSubmit() fsize=1>
54 @ <option value="0">WYSIWYG</option>
55 @ <option value="1">Raw HTML</option>
56 onchange="formatDoc('formatblock'BeVSus2CgrCxHptLBbO CxHptLBbOQxCSNCCaF1GUqwQbBd=0;">
57 @ <option selected>- formatting -</option>
58 @ <option value="h1">Title 1 &lt;h1&gt;</option>
59 @ <option value="h2">Title 2 &lt;h2&gt;</option>
60 @ <option value="h3">Title 3 &lt;h3&gt;</option>
61 @ <option value="h4">Title 4 &lt;h4&gt;</option>
62 @ <option value="h5">Title 5 &lt;h5&gt;</option>
63 @ <option value="h6">Subtitle &lt;h6&gt;</option>
64 @ <option value="p">Paragraph &lt;p&gt;</option>
65 @ <option value="pre">Preformatted &lt;pre&gt;</option>onchange="formatDoc('fontname'BeVSus2CgrCxHptLBbO CxHptLBbOQxCSNCCaF1GUqwQbBd=0;b pages.
66 */
67 #include "config.h"
68 #include <assert.h>
69 #include <ctype.h>
70 #include "wysiwyg.h"
71
72
73 /*
74 ** Output code for a WYSIWYG editor. The caller must have already generated
75 ** the <form> that will contain the editonchange="formatDoc('fontsize'BeVSus2CgrCxHptLBbO CxHptLBbOQxCSNCCaF1GUqwQbBd=0;b pages.
76 */
77 #in </form> after this routine returns. The caller must include
78 ** an onsubmit= attribute on the <form> element that invokes the
79 ** wysiwygSubmit() function.
80 **
81 ** There can only be a single WYSIWYG editor per frame.
82 */
83 void wysiwygEditor(
84 const char *zId, /* ID for this editor */
85 const char *zContent, /* Initionchange="formatDoc('forecolor'BeVSus2CgrCxHptLBbO CxHptLBbOQxCSNCCaF1GUqwQbBd=0;b pages.
86 */
87 #ins">
88 @ .intLink { cursor: pointer; }
89 @ img.intLink { border: 0; }
90 @ #wysiwygBox {
91 @ border: 1px #000000 solid;
92 @ padding: 12px;
93 @ }
94 @ #editMode label { cursor: pointer; }
95 @ </style>
96
97 @ <input id="wysiwygValue" type="hidden" name="%s(zId)">
98 onclick="formatDoc('undo');"
99 @ src="data:ima size=1>
100 @ <option value="0">WYSIWYG</option>
101 @ <option value="1">Raw HTML</option>
102 @ </select></div>
103 @ <div id="toolBar1">
104 @ <select class="format" data-format="formatblock">
105 @ <option selected>- formatting -</option>
106 @ <option value="h1">Title 1 &lonclick="formatDoc('redo');"
107 @ src="data:imation>
108 @ <option value="h3">Title 3 &lt;h3&gt;</option>
109 @ <option value="h4">Title 4 &lt;h4&gt;</option>
110 @ <option value="h5">Title 5 &lt;h5&gt;</option>
111 @ <option value="h6">Subtitle &lt;h6&gt;</o
112 @ onclick"
113 @ src="data:image/</option>
114 @ <option value="pre">Preformatted &lt;pre&gt;</option>
115 @ </select>
116 @ <select class="format" data-format="fontname">
117 @ <option class="heading" selected>- font -</option>
118 @ <option>Arial</option>
119 @ <option>Arial Black</option>
120 @ <option>Courier New</option>
121 @ <option>Times New Roman</option>
122 @ </select>
123 @ <select class="format" data-format="fontsize">
124 @ <option class="heading" selected>- size -</option>
125 @ <option value="1">Very small</option>
126 @ <option value="2">A bit small</option>
127 @ <option value="3">Normal</option>
128 @ <option value="4">Medium-large</option>
129 @ <option value="5">Big</option>
130 @ <option value="6">Very big</option>
131 @ <option value="7">Maximum</option>
132 @ </select>
133 @ <select class="format" data-format="forecolor">
134 @ <option class="heading" selected>- color -</option>
135 @ <option value="red">Red</option>
136 @ <option value="blue">Blue</option>
137 @ <option value="green">Green</option>
138 @ <option value="black">Black</option>
139 @ </select>
140 @ </div>
141 @ <div id="toolBar2">
142 @ <img class="intLink" title="Undo" data-format="undo"
143 @ src="data:image/gif;base64,R0lGODlhFgAWAOMKADljwliE33mOrpGjuYKl8aezxqPD+7
144 @ /I19DV3NHa7P///////////////////////yH5BAEKAA8ALAAAAAAWABYAAARR8MlJq704680
145 @ 7TkaYeJJBnES4EeUJvIGapWYAC0CsocQ7SDlWonclick="formatDoc('bold');"
146 @ src="data:imagD/AMDAwAAAACH5BnhI+pa+H9mJy0LhdgtrxzDG5WGFVk6aXqyk6Y9kXvKKNuLbb6zgMFADs=" />
147
148 @ <img clasonclick="formatDoc('italic');"
149 @ src="data:image/gif;base64,R0lGODlhFgAWAKEDAAAAAF9vj5WIbf///yH5BAEAAAMALA
150 @ AAAAAWABYAAAIjnI+py+0Po5x0gXvruEKHrF2BB1YiCWgbMFIYpsbyTNd2UwAAOw==" />
151
152 @ <img class="onclick="formatDoc('underline');"
153 @ src="data:imaKECAAAAAF9vj////////yH5BAEAAAIALA
154 @ AAAAAWABYAAAIrlI+py+0Po5zUgAsEzvEeL4Ea15EiJJ5PSqJmuwKBEKgxVuXWtun+DwxCCgA
155 @ 7" />
156
157 @ <img class="
158 @ onclick try the"useCSS", 0, true); } // IE9/10
159 @ catch (e) { } D License (also
160 ** known as the "2-Clause License" or "FreeBSD License".)
161 **
162 ** This program is distributed in the hope that it will be useful,
163 ** but without any warranty; without even the implied warranty of
164 ** merchantability or fitness for a particular purpose.
165 **
166 ** Author contact information:
167 ** [email protected]
168 ** http://www.hwacAdd************************************************************
169 **
170 ** This file contains code that generates WYSIWYG text editors on
171 ** web pages.
172 */
173 #include "config.h"
174 #include <assert.h>
175 #include <ctype.h>
176 #include "wysiwyg.h"
177
178
179 /*
180 ** Output code for a WYSIWYG editor. The caller *****************indenI+pa+H9mJy0LhdgtrxzDG5W
181 @ #wysiwygBox {
182 @ border: 1px #000000 solid;
183 @ padding: 12px;
184 @ }
185 @ #editMode label { cursor: pointer; }
186 @ </style>
187
188 @ <input id="wysiwygValue" type="hidden" name="%s(zId)">
189 @ <div id="editModeDiv">Edit mode:
190 @ <select id="editMode" size=1 onchange="/yH5BAEAAB8ALAAAAAAWABYAAAVu4C"
191 ** wysiwygSubmit() fsize=1>
192 @ <option value="0">WYSIWYG</option>
193 @ <option value="1">Raw HTML</option>
194 onchange="formatDoc('formatblock'BeVSus2CgrCxHptLBbO CxHptLBbOQxCSNCCaF1GUqwQbBd=0;">
195 @ <option selected>- formatting -</option>
196 @ <option value="h1">Title 1 &lt;h1&gt;</option>
197 @ <option value="h2">Title 2 &lt;h2&gt;</option>
198 @ <option value="h3">Title 3 &lt;h3&gt;</option>
199 @ <option value="h4">Title 4 &lt;h4&gt;</option>
200 @ <option value="h5">Title 5 &lt;h5&gt;</option>
201 @ <option value="h6">Subtitle &lt;h6&gt;</option>
202 @ <option value="p">Paragraph &lt;p&gt;</option>
203 @ <option value="pre">Preformatted &lt;pre&gt;</option>onchange="formatDoc('fontname'BeVSus2CgrCxHptLBbO CxHptLBbOQxCSNCCaF1GUqwQbBd=0;b pages.
204 */
205 #include "config.h"
206 #include <assert.h>
207 #include <ctype.h>
208 #include "wysiwyg.h"
209
210
211 /*
212 ** Output code for a WYSIWYG editor. The caller must have already generated
213 ** the <form> that will contain the editonchange="formatDoc('fontsize'BeVSus2CgrCxHptLBbO CxHptLBbOQxCSNCCaF1GUqwQbBd=0;b pages.
214 */
215 #in </form> after this routine returns. The caller must include
216 ** an onsubmit= attribute on the <form> element that invokes the
217 ** wysiwygSubmit() function.
218 **
219 ** There can only be a single WYSIWYG editor per frame.
220 */
221 void wysiwygEditor(
222 const char *zId, /* ID for this editor */
223 const char *zContent, /* Initionchange="formatDoc('forecolor'BeVSus2CgrCxHptLBbO CxHptLBbOQxCSNCCaF1GUqwQbBd=0;b pages.
224 */
225 #ins">
226 @ .intLink { cursor: pointer; }
227 @ img.intLink { border: 0; }
228 @ #wysiwygBox {
229 @ border: 1px #000000 solid;
230 @ padding: 12px;
231 @ }
232 @ #editMode label { cursor: pointer; }
233 @ </style>
234
235 @ <input id="wysiwygValue" type="hidden" name="%s(zId)">
236 onclick="formatDoc('undo');"
237 @ src="data:ima size=1>
238 @ <option value="0">WYSIWYG</option>
239 @ <option value="1">Raw HTML</option>
240 @ </select></div>
241 @ <div id="toolBar1">
242 @ <select class="format" data-format="formatblock">
243 @ <option selected>- formatting -</option>
244 @ <option value="h1">Title 1 &lonclick="formatDoc('redo');"
245 @ src="data:imation>
246 @ <option value="h3">Title 3 &lt;h3&gt;</option>
247 @ <option value="h4">Title 4 &lt;h4&gt;</option>
248 @ <option value="h5">Title 5 &lt;h5&gt;</option>
249 @ <option value="h6">Subtitle &lt;h6&gt;</o
250 @ onclick"
251 @ src="data:image/</option>
252 @ <option value="pre">Preformatted &lt;pre&gt;</option>
+10 -4
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -26,13 +26,13 @@
2626
TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
2727
LIBS = $(DMDIR)\extra\lib\ zlib wsock32 advapi32
2828
2929
SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0
3030
31
-SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c xfersetup_.c zip_.c
31
+SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
3232
33
-OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
33
+OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
3434
3535
3636
RC=$(DMDIR)\bin\rcc
3737
RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
3838
@@ -46,11 +46,11 @@
4646
4747
$(OBJDIR)\fossil.res: $B\win\fossil.rc
4848
$(RC) $(RCFLAGS) -o$@ $**
4949
5050
$(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
51
- +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_tag json_timeline json_user json_wiki leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer xfersetup zip shell sqlite3 th th_lang > $@
51
+ +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_tag json_timeline json_user json_wiki leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
5252
+echo fossil >> $@
5353
+echo fossil >> $@
5454
+echo $(LIBS) >> $@
5555
+echo. >> $@
5656
+echo fossil >> $@
@@ -673,10 +673,16 @@
673673
$(OBJDIR)\winhttp$O : winhttp_.c winhttp.h
674674
$(TCC) -o$@ -c winhttp_.c
675675
676676
winhttp_.c : $(SRCDIR)\winhttp.c
677677
+translate$E $** > $@
678
+
679
+$(OBJDIR)\wysiwyg$O : wysiwyg_.c wysiwyg.h
680
+ $(TCC) -o$@ -c wysiwyg_.c
681
+
682
+wysiwyg_.c : $(SRCDIR)\wysiwyg.c
683
+ +translate$E $** > $@
678684
679685
$(OBJDIR)\xfer$O : xfer_.c xfer.h
680686
$(TCC) -o$@ -c xfer_.c
681687
682688
xfer_.c : $(SRCDIR)\xfer.c
@@ -693,7 +699,7 @@
693699
694700
zip_.c : $(SRCDIR)\zip.c
695701
+translate$E $** > $@
696702
697703
headers: makeheaders$E page_index.h VERSION.h
698
- +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
704
+ +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
699705
@copy /Y nul: headers
700706
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -26,13 +26,13 @@
26 TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
27 LIBS = $(DMDIR)\extra\lib\ zlib wsock32 advapi32
28
29 SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0
30
31 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c xfersetup_.c zip_.c
32
33 OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
34
35
36 RC=$(DMDIR)\bin\rcc
37 RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
38
@@ -46,11 +46,11 @@
46
47 $(OBJDIR)\fossil.res: $B\win\fossil.rc
48 $(RC) $(RCFLAGS) -o$@ $**
49
50 $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
51 +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_tag json_timeline json_user json_wiki leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp xfer xfersetup zip shell sqlite3 th th_lang > $@
52 +echo fossil >> $@
53 +echo fossil >> $@
54 +echo $(LIBS) >> $@
55 +echo. >> $@
56 +echo fossil >> $@
@@ -673,10 +673,16 @@
673 $(OBJDIR)\winhttp$O : winhttp_.c winhttp.h
674 $(TCC) -o$@ -c winhttp_.c
675
676 winhttp_.c : $(SRCDIR)\winhttp.c
677 +translate$E $** > $@
 
 
 
 
 
 
678
679 $(OBJDIR)\xfer$O : xfer_.c xfer.h
680 $(TCC) -o$@ -c xfer_.c
681
682 xfer_.c : $(SRCDIR)\xfer.c
@@ -693,7 +699,7 @@
693
694 zip_.c : $(SRCDIR)\zip.c
695 +translate$E $** > $@
696
697 headers: makeheaders$E page_index.h VERSION.h
698 +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
699 @copy /Y nul: headers
700
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -26,13 +26,13 @@
26 TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
27 LIBS = $(DMDIR)\extra\lib\ zlib wsock32 advapi32
28
29 SQLITE_OPTIONS = -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0
30
31 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
32
33 OBJ = $(OBJDIR)\add$O $(OBJDIR)\allrepo$O $(OBJDIR)\attach$O $(OBJDIR)\bag$O $(OBJDIR)\bisect$O $(OBJDIR)\blob$O $(OBJDIR)\branch$O $(OBJDIR)\browse$O $(OBJDIR)\captcha$O $(OBJDIR)\cgi$O $(OBJDIR)\checkin$O $(OBJDIR)\checkout$O $(OBJDIR)\clearsign$O $(OBJDIR)\clone$O $(OBJDIR)\comformat$O $(OBJDIR)\configure$O $(OBJDIR)\content$O $(OBJDIR)\db$O $(OBJDIR)\delta$O $(OBJDIR)\deltacmd$O $(OBJDIR)\descendants$O $(OBJDIR)\diff$O $(OBJDIR)\diffcmd$O $(OBJDIR)\doc$O $(OBJDIR)\encode$O $(OBJDIR)\event$O $(OBJDIR)\export$O $(OBJDIR)\file$O $(OBJDIR)\finfo$O $(OBJDIR)\glob$O $(OBJDIR)\graph$O $(OBJDIR)\gzip$O $(OBJDIR)\http$O $(OBJDIR)\http_socket$O $(OBJDIR)\http_ssl$O $(OBJDIR)\http_transport$O $(OBJDIR)\import$O $(OBJDIR)\info$O $(OBJDIR)\json$O $(OBJDIR)\json_artifact$O $(OBJDIR)\json_branch$O $(OBJDIR)\json_config$O $(OBJDIR)\json_diff$O $(OBJDIR)\json_dir$O $(OBJDIR)\json_finfo$O $(OBJDIR)\json_login$O $(OBJDIR)\json_query$O $(OBJDIR)\json_report$O $(OBJDIR)\json_tag$O $(OBJDIR)\json_timeline$O $(OBJDIR)\json_user$O $(OBJDIR)\json_wiki$O $(OBJDIR)\leaf$O $(OBJDIR)\login$O $(OBJDIR)\main$O $(OBJDIR)\manifest$O $(OBJDIR)\md5$O $(OBJDIR)\merge$O $(OBJDIR)\merge3$O $(OBJDIR)\name$O $(OBJDIR)\path$O $(OBJDIR)\pivot$O $(OBJDIR)\popen$O $(OBJDIR)\pqueue$O $(OBJDIR)\printf$O $(OBJDIR)\rebuild$O $(OBJDIR)\report$O $(OBJDIR)\rss$O $(OBJDIR)\schema$O $(OBJDIR)\search$O $(OBJDIR)\setup$O $(OBJDIR)\sha1$O $(OBJDIR)\shun$O $(OBJDIR)\skins$O $(OBJDIR)\sqlcmd$O $(OBJDIR)\stash$O $(OBJDIR)\stat$O $(OBJDIR)\style$O $(OBJDIR)\sync$O $(OBJDIR)\tag$O $(OBJDIR)\tar$O $(OBJDIR)\th_main$O $(OBJDIR)\timeline$O $(OBJDIR)\tkt$O $(OBJDIR)\tktsetup$O $(OBJDIR)\undo$O $(OBJDIR)\update$O $(OBJDIR)\url$O $(OBJDIR)\user$O $(OBJDIR)\verify$O $(OBJDIR)\vfile$O $(OBJDIR)\wiki$O $(OBJDIR)\wikiformat$O $(OBJDIR)\winhttp$O $(OBJDIR)\wysiwyg$O $(OBJDIR)\xfer$O $(OBJDIR)\xfersetup$O $(OBJDIR)\zip$O $(OBJDIR)\shell$O $(OBJDIR)\sqlite3$O $(OBJDIR)\th$O $(OBJDIR)\th_lang$O
34
35
36 RC=$(DMDIR)\bin\rcc
37 RCFLAGS=-32 -w1 -I$(SRCDIR) /D__DMC__
38
@@ -46,11 +46,11 @@
46
47 $(OBJDIR)\fossil.res: $B\win\fossil.rc
48 $(RC) $(RCFLAGS) -o$@ $**
49
50 $(OBJDIR)\link: $B\win\Makefile.dmc $(OBJDIR)\fossil.res
51 +echo add allrepo attach bag bisect blob branch browse captcha cgi checkin checkout clearsign clone comformat configure content db delta deltacmd descendants diff diffcmd doc encode event export file finfo glob graph gzip http http_socket http_ssl http_transport import info json json_artifact json_branch json_config json_diff json_dir json_finfo json_login json_query json_report json_tag json_timeline json_user json_wiki leaf login main manifest md5 merge merge3 name path pivot popen pqueue printf rebuild report rss schema search setup sha1 shun skins sqlcmd stash stat style sync tag tar th_main timeline tkt tktsetup undo update url user verify vfile wiki wikiformat winhttp wysiwyg xfer xfersetup zip shell sqlite3 th th_lang > $@
52 +echo fossil >> $@
53 +echo fossil >> $@
54 +echo $(LIBS) >> $@
55 +echo. >> $@
56 +echo fossil >> $@
@@ -673,10 +673,16 @@
673 $(OBJDIR)\winhttp$O : winhttp_.c winhttp.h
674 $(TCC) -o$@ -c winhttp_.c
675
676 winhttp_.c : $(SRCDIR)\winhttp.c
677 +translate$E $** > $@
678
679 $(OBJDIR)\wysiwyg$O : wysiwyg_.c wysiwyg.h
680 $(TCC) -o$@ -c wysiwyg_.c
681
682 wysiwyg_.c : $(SRCDIR)\wysiwyg.c
683 +translate$E $** > $@
684
685 $(OBJDIR)\xfer$O : xfer_.c xfer.h
686 $(TCC) -o$@ -c xfer_.c
687
688 xfer_.c : $(SRCDIR)\xfer.c
@@ -693,7 +699,7 @@
699
700 zip_.c : $(SRCDIR)\zip.c
701 +translate$E $** > $@
702
703 headers: makeheaders$E page_index.h VERSION.h
704 +makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
705 @copy /Y nul: headers
706
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -265,10 +265,11 @@
265265
$(SRCDIR)/verify.c \
266266
$(SRCDIR)/vfile.c \
267267
$(SRCDIR)/wiki.c \
268268
$(SRCDIR)/wikiformat.c \
269269
$(SRCDIR)/winhttp.c \
270
+ $(SRCDIR)/wysiwyg.c \
270271
$(SRCDIR)/xfer.c \
271272
$(SRCDIR)/xfersetup.c \
272273
$(SRCDIR)/zip.c
273274
274275
TRANS_SRC = \
@@ -364,10 +365,11 @@
364365
$(OBJDIR)/verify_.c \
365366
$(OBJDIR)/vfile_.c \
366367
$(OBJDIR)/wiki_.c \
367368
$(OBJDIR)/wikiformat_.c \
368369
$(OBJDIR)/winhttp_.c \
370
+ $(OBJDIR)/wysiwyg_.c \
369371
$(OBJDIR)/xfer_.c \
370372
$(OBJDIR)/xfersetup_.c \
371373
$(OBJDIR)/zip_.c
372374
373375
OBJ = \
@@ -463,10 +465,11 @@
463465
$(OBJDIR)/verify.o \
464466
$(OBJDIR)/vfile.o \
465467
$(OBJDIR)/wiki.o \
466468
$(OBJDIR)/wikiformat.o \
467469
$(OBJDIR)/winhttp.o \
470
+ $(OBJDIR)/wysiwyg.o \
468471
$(OBJDIR)/xfer.o \
469472
$(OBJDIR)/xfersetup.o \
470473
$(OBJDIR)/zip.o
471474
472475
APPNAME = fossil.exe
@@ -537,11 +540,11 @@
537540
538541
539542
$(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
540543
$(MKINDEX) $(TRANS_SRC) >$@
541544
$(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
542
- $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h $(OBJDIR)/json_dir_.c:$(OBJDIR)/json_dir.h $(OBJDIR)/json_finfo_.c:$(OBJDIR)/json_finfo.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/json_query_.c:$(OBJDIR)/json_query.h $(OBJDIR)/json_report_.c:$(OBJDIR)/json_report.h $(OBJDIR)/json_tag_.c:$(OBJDIR)/json_tag.h $(OBJDIR)/json_timeline_.c:$(OBJDIR)/json_timeline.h $(OBJDIR)/json_user_.c:$(OBJDIR)/json_user.h $(OBJDIR)/json_wiki_.c:$(OBJDIR)/json_wiki.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/xfersetup_.c:$(OBJDIR)/xfersetup.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
545
+ $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h $(OBJDIR)/json_dir_.c:$(OBJDIR)/json_dir.h $(OBJDIR)/json_finfo_.c:$(OBJDIR)/json_finfo.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/json_query_.c:$(OBJDIR)/json_query.h $(OBJDIR)/json_report_.c:$(OBJDIR)/json_report.h $(OBJDIR)/json_tag_.c:$(OBJDIR)/json_tag.h $(OBJDIR)/json_timeline_.c:$(OBJDIR)/json_timeline.h $(OBJDIR)/json_user_.c:$(OBJDIR)/json_user.h $(OBJDIR)/json_wiki_.c:$(OBJDIR)/json_wiki.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/wysiwyg_.c:$(OBJDIR)/wysiwyg.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/xfersetup_.c:$(OBJDIR)/xfersetup.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
543546
echo Done >$(OBJDIR)/headers
544547
545548
$(OBJDIR)/headers: Makefile
546549
Makefile:
547550
$(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
@@ -1200,10 +1203,17 @@
12001203
12011204
$(OBJDIR)/winhttp.o: $(OBJDIR)/winhttp_.c $(OBJDIR)/winhttp.h $(SRCDIR)/config.h
12021205
$(XTCC) -o $(OBJDIR)/winhttp.o -c $(OBJDIR)/winhttp_.c
12031206
12041207
winhttp.h: $(OBJDIR)/headers
1208
+$(OBJDIR)/wysiwyg_.c: $(SRCDIR)/wysiwyg.c $(OBJDIR)/translate
1209
+ $(TRANSLATE) $(SRCDIR)/wysiwyg.c >$(OBJDIR)/wysiwyg_.c
1210
+
1211
+$(OBJDIR)/wysiwyg.o: $(OBJDIR)/wysiwyg_.c $(OBJDIR)/wysiwyg.h $(SRCDIR)/config.h
1212
+ $(XTCC) -o $(OBJDIR)/wysiwyg.o -c $(OBJDIR)/wysiwyg_.c
1213
+
1214
+wysiwyg.h: $(OBJDIR)/headers
12051215
$(OBJDIR)/xfer_.c: $(SRCDIR)/xfer.c $(OBJDIR)/translate
12061216
$(TRANSLATE) $(SRCDIR)/xfer.c >$(OBJDIR)/xfer_.c
12071217
12081218
$(OBJDIR)/xfer.o: $(OBJDIR)/xfer_.c $(OBJDIR)/xfer.h $(SRCDIR)/config.h
12091219
$(XTCC) -o $(OBJDIR)/xfer.o -c $(OBJDIR)/xfer_.c
12101220
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -265,10 +265,11 @@
265 $(SRCDIR)/verify.c \
266 $(SRCDIR)/vfile.c \
267 $(SRCDIR)/wiki.c \
268 $(SRCDIR)/wikiformat.c \
269 $(SRCDIR)/winhttp.c \
 
270 $(SRCDIR)/xfer.c \
271 $(SRCDIR)/xfersetup.c \
272 $(SRCDIR)/zip.c
273
274 TRANS_SRC = \
@@ -364,10 +365,11 @@
364 $(OBJDIR)/verify_.c \
365 $(OBJDIR)/vfile_.c \
366 $(OBJDIR)/wiki_.c \
367 $(OBJDIR)/wikiformat_.c \
368 $(OBJDIR)/winhttp_.c \
 
369 $(OBJDIR)/xfer_.c \
370 $(OBJDIR)/xfersetup_.c \
371 $(OBJDIR)/zip_.c
372
373 OBJ = \
@@ -463,10 +465,11 @@
463 $(OBJDIR)/verify.o \
464 $(OBJDIR)/vfile.o \
465 $(OBJDIR)/wiki.o \
466 $(OBJDIR)/wikiformat.o \
467 $(OBJDIR)/winhttp.o \
 
468 $(OBJDIR)/xfer.o \
469 $(OBJDIR)/xfersetup.o \
470 $(OBJDIR)/zip.o
471
472 APPNAME = fossil.exe
@@ -537,11 +540,11 @@
537
538
539 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
540 $(MKINDEX) $(TRANS_SRC) >$@
541 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
542 $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h $(OBJDIR)/json_dir_.c:$(OBJDIR)/json_dir.h $(OBJDIR)/json_finfo_.c:$(OBJDIR)/json_finfo.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/json_query_.c:$(OBJDIR)/json_query.h $(OBJDIR)/json_report_.c:$(OBJDIR)/json_report.h $(OBJDIR)/json_tag_.c:$(OBJDIR)/json_tag.h $(OBJDIR)/json_timeline_.c:$(OBJDIR)/json_timeline.h $(OBJDIR)/json_user_.c:$(OBJDIR)/json_user.h $(OBJDIR)/json_wiki_.c:$(OBJDIR)/json_wiki.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/xfersetup_.c:$(OBJDIR)/xfersetup.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
543 echo Done >$(OBJDIR)/headers
544
545 $(OBJDIR)/headers: Makefile
546 Makefile:
547 $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
@@ -1200,10 +1203,17 @@
1200
1201 $(OBJDIR)/winhttp.o: $(OBJDIR)/winhttp_.c $(OBJDIR)/winhttp.h $(SRCDIR)/config.h
1202 $(XTCC) -o $(OBJDIR)/winhttp.o -c $(OBJDIR)/winhttp_.c
1203
1204 winhttp.h: $(OBJDIR)/headers
 
 
 
 
 
 
 
1205 $(OBJDIR)/xfer_.c: $(SRCDIR)/xfer.c $(OBJDIR)/translate
1206 $(TRANSLATE) $(SRCDIR)/xfer.c >$(OBJDIR)/xfer_.c
1207
1208 $(OBJDIR)/xfer.o: $(OBJDIR)/xfer_.c $(OBJDIR)/xfer.h $(SRCDIR)/config.h
1209 $(XTCC) -o $(OBJDIR)/xfer.o -c $(OBJDIR)/xfer_.c
1210
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -265,10 +265,11 @@
265 $(SRCDIR)/verify.c \
266 $(SRCDIR)/vfile.c \
267 $(SRCDIR)/wiki.c \
268 $(SRCDIR)/wikiformat.c \
269 $(SRCDIR)/winhttp.c \
270 $(SRCDIR)/wysiwyg.c \
271 $(SRCDIR)/xfer.c \
272 $(SRCDIR)/xfersetup.c \
273 $(SRCDIR)/zip.c
274
275 TRANS_SRC = \
@@ -364,10 +365,11 @@
365 $(OBJDIR)/verify_.c \
366 $(OBJDIR)/vfile_.c \
367 $(OBJDIR)/wiki_.c \
368 $(OBJDIR)/wikiformat_.c \
369 $(OBJDIR)/winhttp_.c \
370 $(OBJDIR)/wysiwyg_.c \
371 $(OBJDIR)/xfer_.c \
372 $(OBJDIR)/xfersetup_.c \
373 $(OBJDIR)/zip_.c
374
375 OBJ = \
@@ -463,10 +465,11 @@
465 $(OBJDIR)/verify.o \
466 $(OBJDIR)/vfile.o \
467 $(OBJDIR)/wiki.o \
468 $(OBJDIR)/wikiformat.o \
469 $(OBJDIR)/winhttp.o \
470 $(OBJDIR)/wysiwyg.o \
471 $(OBJDIR)/xfer.o \
472 $(OBJDIR)/xfersetup.o \
473 $(OBJDIR)/zip.o
474
475 APPNAME = fossil.exe
@@ -537,11 +540,11 @@
540
541
542 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex
543 $(MKINDEX) $(TRANS_SRC) >$@
544 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h
545 $(MAKEHEADERS) $(OBJDIR)/add_.c:$(OBJDIR)/add.h $(OBJDIR)/allrepo_.c:$(OBJDIR)/allrepo.h $(OBJDIR)/attach_.c:$(OBJDIR)/attach.h $(OBJDIR)/bag_.c:$(OBJDIR)/bag.h $(OBJDIR)/bisect_.c:$(OBJDIR)/bisect.h $(OBJDIR)/blob_.c:$(OBJDIR)/blob.h $(OBJDIR)/branch_.c:$(OBJDIR)/branch.h $(OBJDIR)/browse_.c:$(OBJDIR)/browse.h $(OBJDIR)/captcha_.c:$(OBJDIR)/captcha.h $(OBJDIR)/cgi_.c:$(OBJDIR)/cgi.h $(OBJDIR)/checkin_.c:$(OBJDIR)/checkin.h $(OBJDIR)/checkout_.c:$(OBJDIR)/checkout.h $(OBJDIR)/clearsign_.c:$(OBJDIR)/clearsign.h $(OBJDIR)/clone_.c:$(OBJDIR)/clone.h $(OBJDIR)/comformat_.c:$(OBJDIR)/comformat.h $(OBJDIR)/configure_.c:$(OBJDIR)/configure.h $(OBJDIR)/content_.c:$(OBJDIR)/content.h $(OBJDIR)/db_.c:$(OBJDIR)/db.h $(OBJDIR)/delta_.c:$(OBJDIR)/delta.h $(OBJDIR)/deltacmd_.c:$(OBJDIR)/deltacmd.h $(OBJDIR)/descendants_.c:$(OBJDIR)/descendants.h $(OBJDIR)/diff_.c:$(OBJDIR)/diff.h $(OBJDIR)/diffcmd_.c:$(OBJDIR)/diffcmd.h $(OBJDIR)/doc_.c:$(OBJDIR)/doc.h $(OBJDIR)/encode_.c:$(OBJDIR)/encode.h $(OBJDIR)/event_.c:$(OBJDIR)/event.h $(OBJDIR)/export_.c:$(OBJDIR)/export.h $(OBJDIR)/file_.c:$(OBJDIR)/file.h $(OBJDIR)/finfo_.c:$(OBJDIR)/finfo.h $(OBJDIR)/glob_.c:$(OBJDIR)/glob.h $(OBJDIR)/graph_.c:$(OBJDIR)/graph.h $(OBJDIR)/gzip_.c:$(OBJDIR)/gzip.h $(OBJDIR)/http_.c:$(OBJDIR)/http.h $(OBJDIR)/http_socket_.c:$(OBJDIR)/http_socket.h $(OBJDIR)/http_ssl_.c:$(OBJDIR)/http_ssl.h $(OBJDIR)/http_transport_.c:$(OBJDIR)/http_transport.h $(OBJDIR)/import_.c:$(OBJDIR)/import.h $(OBJDIR)/info_.c:$(OBJDIR)/info.h $(OBJDIR)/json_.c:$(OBJDIR)/json.h $(OBJDIR)/json_artifact_.c:$(OBJDIR)/json_artifact.h $(OBJDIR)/json_branch_.c:$(OBJDIR)/json_branch.h $(OBJDIR)/json_config_.c:$(OBJDIR)/json_config.h $(OBJDIR)/json_diff_.c:$(OBJDIR)/json_diff.h $(OBJDIR)/json_dir_.c:$(OBJDIR)/json_dir.h $(OBJDIR)/json_finfo_.c:$(OBJDIR)/json_finfo.h $(OBJDIR)/json_login_.c:$(OBJDIR)/json_login.h $(OBJDIR)/json_query_.c:$(OBJDIR)/json_query.h $(OBJDIR)/json_report_.c:$(OBJDIR)/json_report.h $(OBJDIR)/json_tag_.c:$(OBJDIR)/json_tag.h $(OBJDIR)/json_timeline_.c:$(OBJDIR)/json_timeline.h $(OBJDIR)/json_user_.c:$(OBJDIR)/json_user.h $(OBJDIR)/json_wiki_.c:$(OBJDIR)/json_wiki.h $(OBJDIR)/leaf_.c:$(OBJDIR)/leaf.h $(OBJDIR)/login_.c:$(OBJDIR)/login.h $(OBJDIR)/main_.c:$(OBJDIR)/main.h $(OBJDIR)/manifest_.c:$(OBJDIR)/manifest.h $(OBJDIR)/md5_.c:$(OBJDIR)/md5.h $(OBJDIR)/merge_.c:$(OBJDIR)/merge.h $(OBJDIR)/merge3_.c:$(OBJDIR)/merge3.h $(OBJDIR)/name_.c:$(OBJDIR)/name.h $(OBJDIR)/path_.c:$(OBJDIR)/path.h $(OBJDIR)/pivot_.c:$(OBJDIR)/pivot.h $(OBJDIR)/popen_.c:$(OBJDIR)/popen.h $(OBJDIR)/pqueue_.c:$(OBJDIR)/pqueue.h $(OBJDIR)/printf_.c:$(OBJDIR)/printf.h $(OBJDIR)/rebuild_.c:$(OBJDIR)/rebuild.h $(OBJDIR)/report_.c:$(OBJDIR)/report.h $(OBJDIR)/rss_.c:$(OBJDIR)/rss.h $(OBJDIR)/schema_.c:$(OBJDIR)/schema.h $(OBJDIR)/search_.c:$(OBJDIR)/search.h $(OBJDIR)/setup_.c:$(OBJDIR)/setup.h $(OBJDIR)/sha1_.c:$(OBJDIR)/sha1.h $(OBJDIR)/shun_.c:$(OBJDIR)/shun.h $(OBJDIR)/skins_.c:$(OBJDIR)/skins.h $(OBJDIR)/sqlcmd_.c:$(OBJDIR)/sqlcmd.h $(OBJDIR)/stash_.c:$(OBJDIR)/stash.h $(OBJDIR)/stat_.c:$(OBJDIR)/stat.h $(OBJDIR)/style_.c:$(OBJDIR)/style.h $(OBJDIR)/sync_.c:$(OBJDIR)/sync.h $(OBJDIR)/tag_.c:$(OBJDIR)/tag.h $(OBJDIR)/tar_.c:$(OBJDIR)/tar.h $(OBJDIR)/th_main_.c:$(OBJDIR)/th_main.h $(OBJDIR)/timeline_.c:$(OBJDIR)/timeline.h $(OBJDIR)/tkt_.c:$(OBJDIR)/tkt.h $(OBJDIR)/tktsetup_.c:$(OBJDIR)/tktsetup.h $(OBJDIR)/undo_.c:$(OBJDIR)/undo.h $(OBJDIR)/update_.c:$(OBJDIR)/update.h $(OBJDIR)/url_.c:$(OBJDIR)/url.h $(OBJDIR)/user_.c:$(OBJDIR)/user.h $(OBJDIR)/verify_.c:$(OBJDIR)/verify.h $(OBJDIR)/vfile_.c:$(OBJDIR)/vfile.h $(OBJDIR)/wiki_.c:$(OBJDIR)/wiki.h $(OBJDIR)/wikiformat_.c:$(OBJDIR)/wikiformat.h $(OBJDIR)/winhttp_.c:$(OBJDIR)/winhttp.h $(OBJDIR)/wysiwyg_.c:$(OBJDIR)/wysiwyg.h $(OBJDIR)/xfer_.c:$(OBJDIR)/xfer.h $(OBJDIR)/xfersetup_.c:$(OBJDIR)/xfersetup.h $(OBJDIR)/zip_.c:$(OBJDIR)/zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h $(OBJDIR)/VERSION.h
546 echo Done >$(OBJDIR)/headers
547
548 $(OBJDIR)/headers: Makefile
549 Makefile:
550 $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate
@@ -1200,10 +1203,17 @@
1203
1204 $(OBJDIR)/winhttp.o: $(OBJDIR)/winhttp_.c $(OBJDIR)/winhttp.h $(SRCDIR)/config.h
1205 $(XTCC) -o $(OBJDIR)/winhttp.o -c $(OBJDIR)/winhttp_.c
1206
1207 winhttp.h: $(OBJDIR)/headers
1208 $(OBJDIR)/wysiwyg_.c: $(SRCDIR)/wysiwyg.c $(OBJDIR)/translate
1209 $(TRANSLATE) $(SRCDIR)/wysiwyg.c >$(OBJDIR)/wysiwyg_.c
1210
1211 $(OBJDIR)/wysiwyg.o: $(OBJDIR)/wysiwyg_.c $(OBJDIR)/wysiwyg.h $(SRCDIR)/config.h
1212 $(XTCC) -o $(OBJDIR)/wysiwyg.o -c $(OBJDIR)/wysiwyg_.c
1213
1214 wysiwyg.h: $(OBJDIR)/headers
1215 $(OBJDIR)/xfer_.c: $(SRCDIR)/xfer.c $(OBJDIR)/translate
1216 $(TRANSLATE) $(SRCDIR)/xfer.c >$(OBJDIR)/xfer_.c
1217
1218 $(OBJDIR)/xfer.o: $(OBJDIR)/xfer_.c $(OBJDIR)/xfer.h $(SRCDIR)/config.h
1219 $(XTCC) -o $(OBJDIR)/xfer.o -c $(OBJDIR)/xfer_.c
1220
+10 -3
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -40,13 +40,13 @@
4040
LIBS = $(ZLIB) ws2_32.lib advapi32.lib $(SSLLIB)
4141
LIBDIR = -LIBPATH:$(MSCDIR)\extra\lib -LIBPATH:$(ZLIBDIR)
4242
4343
SQLITE_OPTIONS = /DSQLITE_OMIT_LOAD_EXTENSION=1 /DSQLITE_THREADSAFE=0 /DSQLITE_DEFAULT_FILE_FORMAT=4 /DSQLITE_ENABLE_STAT3 /Dlocaltime=fossil_localtime /DSQLITE_ENABLE_LOCKING_STYLE=0
4444
45
-SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c xfersetup_.c zip_.c
45
+SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
4646
47
-OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\glob$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\json$O $(OX)\json_artifact$O $(OX)\json_branch$O $(OX)\json_config$O $(OX)\json_diff$O $(OX)\json_dir$O $(OX)\json_finfo$O $(OX)\json_login$O $(OX)\json_query$O $(OX)\json_report$O $(OX)\json_tag$O $(OX)\json_timeline$O $(OX)\json_user$O $(OX)\json_wiki$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\xfersetup$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O
47
+OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\glob$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\json$O $(OX)\json_artifact$O $(OX)\json_branch$O $(OX)\json_config$O $(OX)\json_diff$O $(OX)\json_dir$O $(OX)\json_finfo$O $(OX)\json_login$O $(OX)\json_query$O $(OX)\json_report$O $(OX)\json_tag$O $(OX)\json_timeline$O $(OX)\json_user$O $(OX)\json_wiki$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\wysiwyg$O $(OX)\xfer$O $(OX)\xfersetup$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O
4848
4949
5050
APPNAME = $(OX)\fossil$(E)
5151
5252
all: $(OX) $(APPNAME)
@@ -152,10 +152,11 @@
152152
echo $(OX)\verify.obj >> $@
153153
echo $(OX)\vfile.obj >> $@
154154
echo $(OX)\wiki.obj >> $@
155155
echo $(OX)\wikiformat.obj >> $@
156156
echo $(OX)\winhttp.obj >> $@
157
+ echo $(OX)\wysiwyg.obj >> $@
157158
echo $(OX)\xfer.obj >> $@
158159
echo $(OX)\xfersetup.obj >> $@
159160
echo $(OX)\zip.obj >> $@
160161
echo $(LIBS) >> $@
161162
@@ -782,10 +783,16 @@
782783
$(OX)\winhttp$O : winhttp_.c winhttp.h
783784
$(TCC) /Fo$@ -c winhttp_.c
784785
785786
winhttp_.c : $(SRCDIR)\winhttp.c
786787
translate$E $** > $@
788
+
789
+$(OX)\wysiwyg$O : wysiwyg_.c wysiwyg.h
790
+ $(TCC) /Fo$@ -c wysiwyg_.c
791
+
792
+wysiwyg_.c : $(SRCDIR)\wysiwyg.c
793
+ translate$E $** > $@
787794
788795
$(OX)\xfer$O : xfer_.c xfer.h
789796
$(TCC) /Fo$@ -c xfer_.c
790797
791798
xfer_.c : $(SRCDIR)\xfer.c
@@ -802,7 +809,7 @@
802809
803810
zip_.c : $(SRCDIR)\zip.c
804811
translate$E $** > $@
805812
806813
headers: makeheaders$E page_index.h VERSION.h
807
- makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
814
+ makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
808815
@copy /Y nul: headers
809816
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -40,13 +40,13 @@
40 LIBS = $(ZLIB) ws2_32.lib advapi32.lib $(SSLLIB)
41 LIBDIR = -LIBPATH:$(MSCDIR)\extra\lib -LIBPATH:$(ZLIBDIR)
42
43 SQLITE_OPTIONS = /DSQLITE_OMIT_LOAD_EXTENSION=1 /DSQLITE_THREADSAFE=0 /DSQLITE_DEFAULT_FILE_FORMAT=4 /DSQLITE_ENABLE_STAT3 /Dlocaltime=fossil_localtime /DSQLITE_ENABLE_LOCKING_STYLE=0
44
45 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c xfer_.c xfersetup_.c zip_.c
46
47 OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\glob$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\json$O $(OX)\json_artifact$O $(OX)\json_branch$O $(OX)\json_config$O $(OX)\json_diff$O $(OX)\json_dir$O $(OX)\json_finfo$O $(OX)\json_login$O $(OX)\json_query$O $(OX)\json_report$O $(OX)\json_tag$O $(OX)\json_timeline$O $(OX)\json_user$O $(OX)\json_wiki$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\xfer$O $(OX)\xfersetup$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O
48
49
50 APPNAME = $(OX)\fossil$(E)
51
52 all: $(OX) $(APPNAME)
@@ -152,10 +152,11 @@
152 echo $(OX)\verify.obj >> $@
153 echo $(OX)\vfile.obj >> $@
154 echo $(OX)\wiki.obj >> $@
155 echo $(OX)\wikiformat.obj >> $@
156 echo $(OX)\winhttp.obj >> $@
 
157 echo $(OX)\xfer.obj >> $@
158 echo $(OX)\xfersetup.obj >> $@
159 echo $(OX)\zip.obj >> $@
160 echo $(LIBS) >> $@
161
@@ -782,10 +783,16 @@
782 $(OX)\winhttp$O : winhttp_.c winhttp.h
783 $(TCC) /Fo$@ -c winhttp_.c
784
785 winhttp_.c : $(SRCDIR)\winhttp.c
786 translate$E $** > $@
 
 
 
 
 
 
787
788 $(OX)\xfer$O : xfer_.c xfer.h
789 $(TCC) /Fo$@ -c xfer_.c
790
791 xfer_.c : $(SRCDIR)\xfer.c
@@ -802,7 +809,7 @@
802
803 zip_.c : $(SRCDIR)\zip.c
804 translate$E $** > $@
805
806 headers: makeheaders$E page_index.h VERSION.h
807 makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
808 @copy /Y nul: headers
809
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -40,13 +40,13 @@
40 LIBS = $(ZLIB) ws2_32.lib advapi32.lib $(SSLLIB)
41 LIBDIR = -LIBPATH:$(MSCDIR)\extra\lib -LIBPATH:$(ZLIBDIR)
42
43 SQLITE_OPTIONS = /DSQLITE_OMIT_LOAD_EXTENSION=1 /DSQLITE_THREADSAFE=0 /DSQLITE_DEFAULT_FILE_FORMAT=4 /DSQLITE_ENABLE_STAT3 /Dlocaltime=fossil_localtime /DSQLITE_ENABLE_LOCKING_STYLE=0
44
45 SRC = add_.c allrepo_.c attach_.c bag_.c bisect_.c blob_.c branch_.c browse_.c captcha_.c cgi_.c checkin_.c checkout_.c clearsign_.c clone_.c comformat_.c configure_.c content_.c db_.c delta_.c deltacmd_.c descendants_.c diff_.c diffcmd_.c doc_.c encode_.c event_.c export_.c file_.c finfo_.c glob_.c graph_.c gzip_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c login_.c main_.c manifest_.c md5_.c merge_.c merge3_.c name_.c path_.c pivot_.c popen_.c pqueue_.c printf_.c rebuild_.c report_.c rss_.c schema_.c search_.c setup_.c sha1_.c shun_.c skins_.c sqlcmd_.c stash_.c stat_.c style_.c sync_.c tag_.c tar_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c update_.c url_.c user_.c verify_.c vfile_.c wiki_.c wikiformat_.c winhttp_.c wysiwyg_.c xfer_.c xfersetup_.c zip_.c
46
47 OBJ = $(OX)\add$O $(OX)\allrepo$O $(OX)\attach$O $(OX)\bag$O $(OX)\bisect$O $(OX)\blob$O $(OX)\branch$O $(OX)\browse$O $(OX)\captcha$O $(OX)\cgi$O $(OX)\checkin$O $(OX)\checkout$O $(OX)\clearsign$O $(OX)\clone$O $(OX)\comformat$O $(OX)\configure$O $(OX)\content$O $(OX)\db$O $(OX)\delta$O $(OX)\deltacmd$O $(OX)\descendants$O $(OX)\diff$O $(OX)\diffcmd$O $(OX)\doc$O $(OX)\encode$O $(OX)\event$O $(OX)\export$O $(OX)\file$O $(OX)\finfo$O $(OX)\glob$O $(OX)\graph$O $(OX)\gzip$O $(OX)\http$O $(OX)\http_socket$O $(OX)\http_ssl$O $(OX)\http_transport$O $(OX)\import$O $(OX)\info$O $(OX)\json$O $(OX)\json_artifact$O $(OX)\json_branch$O $(OX)\json_config$O $(OX)\json_diff$O $(OX)\json_dir$O $(OX)\json_finfo$O $(OX)\json_login$O $(OX)\json_query$O $(OX)\json_report$O $(OX)\json_tag$O $(OX)\json_timeline$O $(OX)\json_user$O $(OX)\json_wiki$O $(OX)\leaf$O $(OX)\login$O $(OX)\main$O $(OX)\manifest$O $(OX)\md5$O $(OX)\merge$O $(OX)\merge3$O $(OX)\name$O $(OX)\path$O $(OX)\pivot$O $(OX)\popen$O $(OX)\pqueue$O $(OX)\printf$O $(OX)\rebuild$O $(OX)\report$O $(OX)\rss$O $(OX)\schema$O $(OX)\search$O $(OX)\setup$O $(OX)\sha1$O $(OX)\shun$O $(OX)\skins$O $(OX)\sqlcmd$O $(OX)\stash$O $(OX)\stat$O $(OX)\style$O $(OX)\sync$O $(OX)\tag$O $(OX)\tar$O $(OX)\th_main$O $(OX)\timeline$O $(OX)\tkt$O $(OX)\tktsetup$O $(OX)\undo$O $(OX)\update$O $(OX)\url$O $(OX)\user$O $(OX)\verify$O $(OX)\vfile$O $(OX)\wiki$O $(OX)\wikiformat$O $(OX)\winhttp$O $(OX)\wysiwyg$O $(OX)\xfer$O $(OX)\xfersetup$O $(OX)\zip$O $(OX)\shell$O $(OX)\sqlite3$O $(OX)\th$O $(OX)\th_lang$O
48
49
50 APPNAME = $(OX)\fossil$(E)
51
52 all: $(OX) $(APPNAME)
@@ -152,10 +152,11 @@
152 echo $(OX)\verify.obj >> $@
153 echo $(OX)\vfile.obj >> $@
154 echo $(OX)\wiki.obj >> $@
155 echo $(OX)\wikiformat.obj >> $@
156 echo $(OX)\winhttp.obj >> $@
157 echo $(OX)\wysiwyg.obj >> $@
158 echo $(OX)\xfer.obj >> $@
159 echo $(OX)\xfersetup.obj >> $@
160 echo $(OX)\zip.obj >> $@
161 echo $(LIBS) >> $@
162
@@ -782,10 +783,16 @@
783 $(OX)\winhttp$O : winhttp_.c winhttp.h
784 $(TCC) /Fo$@ -c winhttp_.c
785
786 winhttp_.c : $(SRCDIR)\winhttp.c
787 translate$E $** > $@
788
789 $(OX)\wysiwyg$O : wysiwyg_.c wysiwyg.h
790 $(TCC) /Fo$@ -c wysiwyg_.c
791
792 wysiwyg_.c : $(SRCDIR)\wysiwyg.c
793 translate$E $** > $@
794
795 $(OX)\xfer$O : xfer_.c xfer.h
796 $(TCC) /Fo$@ -c xfer_.c
797
798 xfer_.c : $(SRCDIR)\xfer.c
@@ -802,7 +809,7 @@
809
810 zip_.c : $(SRCDIR)\zip.c
811 translate$E $** > $@
812
813 headers: makeheaders$E page_index.h VERSION.h
814 makeheaders$E add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h bisect_.c:bisect.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h glob_.c:glob.h graph_.c:graph.h gzip_.c:gzip.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h json_.c:json.h json_artifact_.c:json_artifact.h json_branch_.c:json_branch.h json_config_.c:json_config.h json_diff_.c:json_diff.h json_dir_.c:json_dir.h json_finfo_.c:json_finfo.h json_login_.c:json_login.h json_query_.c:json_query.h json_report_.c:json_report.h json_tag_.c:json_tag.h json_timeline_.c:json_timeline.h json_user_.c:json_user.h json_wiki_.c:json_wiki.h leaf_.c:leaf.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h path_.c:path.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stash_.c:stash.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h tar_.c:tar.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h wysiwyg_.c:wysiwyg.h xfer_.c:xfer.h xfersetup_.c:xfersetup.h zip_.c:zip.h $(SRCDIR)\sqlite3.h $(SRCDIR)\th.h VERSION.h $(SRCDIR)\cson_amalgamation.h
815 @copy /Y nul: headers
816

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button