Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch tcl-argv-handling-v2 Excluding Merge-Ins
This is equivalent to a diff from 3709b1eaa2 to a7392129c0
2012-08-22
| ||
11:51 | Merge the TCL argument handling patches into trunk. check-in: b6a7e52c93 user: drh tags: trunk | |
11:42 | Always call Tcl_FindExecutable, even when the command line arguments are invalid. Closed-Leaf check-in: a7392129c0 user: mistachkin tags: tcl-argv-handling-v2 | |
11:33 | When there are no command line arguments, set the argv script variable to an empty list. check-in: b04d5ab4af user: mistachkin tags: tcl-argv-handling-v2 | |
11:15 | Modify the Tcl argument handling to deal with object reference counts and errors. check-in: 46864ac9cc user: mistachkin tags: tcl-argv-handling-v2 | |
07:45 | Pass argv arguments to Tcl Closed-Leaf check-in: 3709b1eaa2 user: jan.nijtmans tags: tcl-argv-handling | |
2012-08-21
| ||
23:45 | Restore the previous Tcl argc/argv handling as all the arguments will be used for the Tcl argv script variable. check-in: c9bb320065 user: mistachkin tags: trunk | |
Changes to src/th_tcl.c.
366 366 Th_Interp *th1Interp = (Th_Interp *)clientData; 367 367 if( !th1Interp ) return; 368 368 /* Remove the Tcl integration commands. */ 369 369 for(i=0; i<(sizeof(aCommand)/sizeof(aCommand[0])); i++){ 370 370 Th_RenameCommand(th1Interp, aCommand[i].zName, -1, NULL, 0); 371 371 } 372 372 } 373 + 374 +/* 375 +** Sets the "argv0", "argc", and "argv" script variables in the Tcl interpreter 376 +** based on the supplied command line arguments. 377 + */ 378 +static int setTclArguments( 379 + Tcl_Interp *pInterp, 380 + int argc, 381 + char **argv 382 +){ 383 + Tcl_Obj *objPtr; 384 + Tcl_Obj *resultObjPtr; 385 + Tcl_Obj *listPtr; 386 + int rc = TCL_OK; 387 + if( argc<=0 || !argv ){ 388 + return TCL_OK; 389 + } 390 + objPtr = Tcl_NewStringObj(argv[0], -1); 391 + Tcl_IncrRefCount(objPtr); 392 + resultObjPtr = Tcl_SetVar2Ex(pInterp, "argv0", NULL, objPtr, 393 + TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG); 394 + Tcl_DecrRefCount(objPtr); 395 + if( !resultObjPtr ){ 396 + return TCL_ERROR; 397 + } 398 + objPtr = Tcl_NewIntObj(argc - 1); 399 + Tcl_IncrRefCount(objPtr); 400 + resultObjPtr = Tcl_SetVar2Ex(pInterp, "argc", NULL, objPtr, 401 + TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG); 402 + Tcl_DecrRefCount(objPtr); 403 + if( !resultObjPtr ){ 404 + return TCL_ERROR; 405 + } 406 + listPtr = Tcl_NewListObj(0, NULL); 407 + Tcl_IncrRefCount(listPtr); 408 + if( argc>1 ){ 409 + while( --argc ){ 410 + objPtr = Tcl_NewStringObj(*++argv, -1); 411 + Tcl_IncrRefCount(objPtr); 412 + rc = Tcl_ListObjAppendElement(pInterp, listPtr, objPtr); 413 + Tcl_DecrRefCount(objPtr); 414 + if( rc!=TCL_OK ){ 415 + break; 416 + } 417 + } 418 + } 419 + if( rc==TCL_OK ){ 420 + resultObjPtr = Tcl_SetVar2Ex(pInterp, "argv", NULL, listPtr, 421 + TCL_GLOBAL_ONLY|TCL_LEAVE_ERR_MSG); 422 + if( !resultObjPtr ){ 423 + rc = TCL_ERROR; 424 + } 425 + } 426 + Tcl_DecrRefCount(listPtr); 427 + return rc; 428 +} 373 429 374 430 /* 375 431 ** Creates and initializes a Tcl interpreter for use with the specified TH1 376 432 ** interpreter. Stores the created Tcl interpreter in the Tcl context supplied 377 433 ** by the caller. 378 434 */ 379 435 static int createTclInterp( 380 436 Th_Interp *interp, 381 437 void *pContext 382 438 ){ 383 439 struct TclContext *tclContext = (struct TclContext *)pContext; 440 + int argc; 441 + char **argv; 442 + char *argv0 = 0; 384 443 Tcl_Interp *tclInterp; 385 444 386 445 if ( !tclContext ){ 387 446 Th_ErrorMessage(interp, 388 447 "Invalid Tcl context", (const char *)"", 0); 389 448 return TH_ERROR; 390 449 } 391 450 if ( tclContext->interp ){ 392 451 return TH_OK; 393 452 } 394 - Tcl_FindExecutable(tclContext->argv[0]); 453 + argc = tclContext->argc; 454 + argv = tclContext->argv; 455 + if( argc>0 && argv ){ 456 + argv0 = argv[0]; 457 + } 458 + Tcl_FindExecutable(argv0); 395 459 tclInterp = tclContext->interp = Tcl_CreateInterp(); 396 460 if( !tclInterp || Tcl_InterpDeleted(tclInterp) ){ 397 461 Th_ErrorMessage(interp, 398 462 "Could not create Tcl interpreter", (const char *)"", 0); 399 463 return TH_ERROR; 400 464 } 401 465 if( Tcl_Init(tclInterp)!=TCL_OK ){ 402 466 Th_ErrorMessage(interp, 403 467 "Tcl initialization error:", Tcl_GetStringResult(tclInterp), -1); 404 468 Tcl_DeleteInterp(tclInterp); 405 469 tclContext->interp = tclInterp = 0; 406 470 return TH_ERROR; 407 471 } 408 - if (tclContext->argc > 0) { 409 - int argc = tclContext->argc - 1; 410 - char **argv = tclContext->argv + 1; 411 - Tcl_Obj *argvPtr = Tcl_NewListObj(0, NULL); 412 - while (argc--) { 413 - Tcl_ListObjAppendElement(NULL, argvPtr, Tcl_NewStringObj(*argv++, -1)); 414 - } 415 - Tcl_SetVar2Ex(tclContext->interp, "argv", NULL, argvPtr, TCL_GLOBAL_ONLY); 472 + if( setTclArguments(tclInterp, argc, argv)!=TCL_OK ){ 473 + Th_ErrorMessage(interp, 474 + "Tcl error setting arguments:", Tcl_GetStringResult(tclInterp), -1); 475 + Tcl_DeleteInterp(tclInterp); 476 + tclContext->interp = tclInterp = 0; 477 + return TH_ERROR; 416 478 } 417 - 418 479 /* Add the TH1 integration commands to Tcl. */ 419 480 Tcl_CallWhenDeleted(tclInterp, Th1DeleteProc, interp); 420 481 Tcl_CreateObjCommand(tclInterp, "th1Eval", Th1EvalObjCmd, interp, NULL); 421 482 Tcl_CreateObjCommand(tclInterp, "th1Expr", Th1ExprObjCmd, interp, NULL); 422 483 return TH_OK; 423 484 } 424 485
Changes to test/th1-tcl.test.
96 96 fossil test-th-render [file nativename [file join $dir th1-tcl8.txt]] 97 97 98 98 test th1-tcl-8 {$RESULT eq {<hr><p class="thmainError">ERROR:\ 99 99 Cannot invoke Tcl command: tailcall</p>} || $RESULT eq {<hr><p\ 100 100 class="thmainError">ERROR: tailcall can only be called from a proc or\ 101 101 lambda</p>}} 102 102 103 +############################################################################### 104 + 105 +fossil test-th-render [file nativename [file join $dir th1-tcl9.txt]] 106 + 107 +test th1-tcl-9 {[string trim $RESULT] eq [list [file tail $fossilexe] 2 \ 108 +[list test-th-render [file nativename [file join $dir th1-tcl9.txt]]]]}
Added test/th1-tcl9.txt.
1 +<th1> 2 + # 3 + # This is a "TH1 fragment" used to test the Tcl integration features of TH1. 4 + # The corresponding test file executes this file using the test-th-render 5 + # Fossil command. 6 + # 7 + set channel stdout; tclInvoke set channel $channel 8 + tclEval {puts $channel [list [file tail $argv0] $argc $argv]} 9 +</th1>
Changes to win/Makefile.mingw.mistachkin.
263 263 $(SRCDIR)/url.c \ 264 264 $(SRCDIR)/user.c \ 265 265 $(SRCDIR)/verify.c \ 266 266 $(SRCDIR)/vfile.c \ 267 267 $(SRCDIR)/wiki.c \ 268 268 $(SRCDIR)/wikiformat.c \ 269 269 $(SRCDIR)/winhttp.c \ 270 + $(SRCDIR)/wysiwyg.c \ 270 271 $(SRCDIR)/xfer.c \ 271 272 $(SRCDIR)/xfersetup.c \ 272 273 $(SRCDIR)/zip.c 273 274 274 275 TRANS_SRC = \ 275 276 $(OBJDIR)/add_.c \ 276 277 $(OBJDIR)/allrepo_.c \ ................................................................................ 362 363 $(OBJDIR)/url_.c \ 363 364 $(OBJDIR)/user_.c \ 364 365 $(OBJDIR)/verify_.c \ 365 366 $(OBJDIR)/vfile_.c \ 366 367 $(OBJDIR)/wiki_.c \ 367 368 $(OBJDIR)/wikiformat_.c \ 368 369 $(OBJDIR)/winhttp_.c \ 370 + $(OBJDIR)/wysiwyg_.c \ 369 371 $(OBJDIR)/xfer_.c \ 370 372 $(OBJDIR)/xfersetup_.c \ 371 373 $(OBJDIR)/zip_.c 372 374 373 375 OBJ = \ 374 376 $(OBJDIR)/add.o \ 375 377 $(OBJDIR)/allrepo.o \ ................................................................................ 461 463 $(OBJDIR)/url.o \ 462 464 $(OBJDIR)/user.o \ 463 465 $(OBJDIR)/verify.o \ 464 466 $(OBJDIR)/vfile.o \ 465 467 $(OBJDIR)/wiki.o \ 466 468 $(OBJDIR)/wikiformat.o \ 467 469 $(OBJDIR)/winhttp.o \ 470 + $(OBJDIR)/wysiwyg.o \ 468 471 $(OBJDIR)/xfer.o \ 469 472 $(OBJDIR)/xfersetup.o \ 470 473 $(OBJDIR)/zip.o 471 474 472 475 APPNAME = fossil.exe 473 476 TRANSLATE = $(OBJDIR)/translate.exe 474 477 MAKEHEADERS = $(OBJDIR)/makeheaders.exe ................................................................................ 479 482 all: $(OBJDIR) $(APPNAME) 480 483 481 484 $(OBJDIR)/icon.o: $(SRCDIR)/../win/icon.rc 482 485 cp $(SRCDIR)/../win/icon.rc $(OBJDIR) 483 486 windres $(OBJDIR)/icon.rc -o $(OBJDIR)/icon.o 484 487 485 488 install: $(APPNAME) 489 + mkdir -p $(INSTALLDIR) 486 490 mv $(APPNAME) $(INSTALLDIR) 487 491 488 492 $(OBJDIR): 489 493 mkdir $(OBJDIR) 490 494 491 495 $(OBJDIR)/translate: $(SRCDIR)/translate.c 492 496 $(BCC) -o $(OBJDIR)/translate $(SRCDIR)/translate.c ................................................................................ 534 538 setup: $(OBJDIR) $(APPNAME) 535 539 $(MAKENSIS) ./fossil.nsi 536 540 537 541 538 542 $(OBJDIR)/page_index.h: $(TRANS_SRC) $(OBJDIR)/mkindex 539 543 $(MKINDEX) $(TRANS_SRC) >$@ 540 544 $(OBJDIR)/headers: $(OBJDIR)/page_index.h $(OBJDIR)/makeheaders $(OBJDIR)/VERSION.h 541 - $(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 542 546 echo Done >$(OBJDIR)/headers 543 547 544 548 $(OBJDIR)/headers: Makefile 545 549 Makefile: 546 550 $(OBJDIR)/add_.c: $(SRCDIR)/add.c $(OBJDIR)/translate 547 551 $(TRANSLATE) $(SRCDIR)/add.c >$(OBJDIR)/add_.c 548 552 ................................................................................ 1197 1201 $(OBJDIR)/winhttp_.c: $(SRCDIR)/winhttp.c $(OBJDIR)/translate 1198 1202 $(TRANSLATE) $(SRCDIR)/winhttp.c >$(OBJDIR)/winhttp_.c 1199 1203 1200 1204 $(OBJDIR)/winhttp.o: $(OBJDIR)/winhttp_.c $(OBJDIR)/winhttp.h $(SRCDIR)/config.h 1201 1205 $(XTCC) -o $(OBJDIR)/winhttp.o -c $(OBJDIR)/winhttp_.c 1202 1206 1203 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 1204 1215 $(OBJDIR)/xfer_.c: $(SRCDIR)/xfer.c $(OBJDIR)/translate 1205 1216 $(TRANSLATE) $(SRCDIR)/xfer.c >$(OBJDIR)/xfer_.c 1206 1217 1207 1218 $(OBJDIR)/xfer.o: $(OBJDIR)/xfer_.c $(OBJDIR)/xfer.h $(SRCDIR)/config.h 1208 1219 $(XTCC) -o $(OBJDIR)/xfer.o -c $(OBJDIR)/xfer_.c 1209 1220 1210 1221 xfer.h: $(OBJDIR)/headers