Mercurial > ~dholland > hg > ag > index.cgi
view doc/admin/todo-small.txt @ 12:aab9ff6af791
Strengthen the build hack for non-DOS targets.
author | David A. Holland |
---|---|
date | Tue, 31 May 2022 00:58:42 -0400 |
parents | 13d2b8934445 |
children |
line wrap: on
line source
Small todo items This file describes the smaller and more code-oriented things that need to be done. ------------------------------------------------------------ POSSIBLE BUGS - AgStackStorage::~AgStackStorage (in support/agstack.cpp, near the bottom) has a bogus delete call. See comment there. - There's some thread locking in a few places (one being openfile.cpp, another being stacks.cpp) and most of it appears to be pretty bogus. This should be cleaned up. (Note: the ICritSec class is really a locking hook, not a lock; all ICritSec instances appear to be connected to a single big global lock. How lame. Also, why do Windows people insist on creating "critical section" objects? A critical section is a piece of *code*.) Relatedly, rewrite/replace resource.h. - fence_ng in myalloc.cpp will probably blow up on non-intel architectures. All of myalloc.cpp should probably be revamped. ------------------------------------------------------------ CODE CLEANUP - There are quite a few uses of sprintf and vsprintf about. These should be replaced with snprintf and vsnprintf. - Should fix up any code that warns when -fno-strict-aliasing is turned off. - fix up the configuration parameters so they aren't all defined in three places (config.h, config.cpp, and cf.syn) - maybe rig up some code generation so they can be listed once. - fix or remove FindTabs class (currently in wdata.h); it copies the string but doesn't use the copy. - Move things that don't need to be in header files into the corresponding source files, to reduce crosstalk. - Figure out where to put PUREMARK instead of defining it separately in key.cpp, ut.cpp, and ws.cpp. - void_token_type is an int and it very much looks like it ought to be unsigned. - buildErrorMsg[] ought to belong to error.h. (this should make ctrlpanel.cpp not need bpe3.h) - The templates in regismd.h have become quite disgusting with apparently-now-required explicit template name qualification all over everywhere. Fix. - AgAction::Kernel (in action.h), or most of it, should be a generic RefCount object. - The key_words enum is declared in both bpe3.cpp and keyword.cpp, and should be shared in a header file. It also looks like it *must* be the same as the key_words enum declared in engine.cgs. - agstring.cpp shouldn't be including csexp.h - bitmap.h shouldn't be including data.h - windowreg.cpp shouldn't be using vaclgui files - there are still some uses of "extern" in various cpp files - extern char *string_base in dvplug.cpp - in bpe3.cpp check header_write_error for consistent usage (is error EOF or just nonzero?) - how about condensing all the cut&pasted comparison code in agstring.cpp? - in dspar.cpp, make ColorPair::setValue(char *) be const char * ------------------------------------------------------------ CODE - It should be possible to disable certain warnings on the agcl command line. (e.g. unused tokens, conflicts resolved by precedence rules, stuff like that.) - Add -v option to agcl to print the version. - It would be nice if the copyright notice in the About box linked to the copy of the license in the help system. Right now, we can't do that, because the About box isn't a help window and doesn't have help links per se. - Figure out where to put agclib1 in the tree. Also figure out how to maintain it separately without causing an administrative nightmare. - It would be nice if the about box listed the author, and it doesn't. But I think it's going to need multiple tabs or something to have room to do it nicely, and that's a hassle. (Nor is it worth doing in the old UI.) ------------------------------------------------------------ BUILD - Running the test suite under Wine causes diffs. These diffs appear to be benign as of this writing, but it would be better for everyone if they didn't happen at all. - Running the test suite under Wine requires an X display. Without one, even agcl.exe doesn't work. It's not immediately clear why, but it might not be all that hard to fix. - make depend crashes out if there are no *.d files. (Or, with the IBM compiler, *.u files.) This won't happen in the ordinary course of things, but if someone does "make distclean; make depend" it will. - If you build in the source dir, run the tests, and clean the tests, tests/agcl/ffcalc/number.h, which would be needed by two of the ffcalc variants to compile if they actually got compiled, gets erased. This is unimportant, for now at least, but irritating. Probably the right way to fix it is to revamp the test makefiles to know the exact output files that should exist instead of using wildcards. - It would be nice to have the lint scripts stuff also test-compile each header file on its own without any other material. Header files are supposed to themselves include everything they depend on, but in general this stops being true unless it's enforced. - While GNU make can't do successful parallel builds, BSD make could be made to by use of .WAIT. Setting this up is not all that difficult given a way to conditionally define $(WAIT) as .WAIT for BSD make and empty for everyone else, and there are hacks that can be made to accomplish that. ------------------------------------------------------------ MANUAL AND DOCS - From one of the tex faqs: : Courier is (as we all know, to our cost) freely available; a far more : presentable monospace font is LuxiMono, which is also freely available. : Monospace text in the typeset version of this FAQ uses LuxiMono, with : the metrics and LaTeX support available on the archive. http://www.tex.ac.uk/tex-archive/fonts/LuxiMono/ - Quite a few things in "sbb" (sbb-doc.txt et al.) are just plain wrong. These should be fixed... but not until the various copies have been reconciled and can be built from one master version. - "reserve keywords" is missing from Appendix A. - There should probably be a "bug reporting" topic in the help, and it should maybe even have its own menu entry in the gui.