Skip to content
Snippets Groups Projects
  1. Nov 11, 2015
  2. Nov 07, 2015
  3. Nov 06, 2015
  4. Oct 31, 2015
    • Andrew Price's avatar
      Folder file overhaul · 6bcd1e4b
      Andrew Price authored
      This moves the folder index, text, moderation and tmp files into
      directories corresponding to the file name suffixes currently in use.
      
      Old                     New
      ---                     ---
      STATEDIR/foo.i          STATEDIR/index/foo
      STATEDIR/foo.i.m        STATEDIR/index/mod/foo
      STATEDIR/foo.i.t        STATEDIR/index/new/foo
      STATEDIR/foo.t          STATEDIR/text/foo
      STATEDIR/foo.t.m        STATEDIR/text/mod/foo
      STATEDIR/foo.t.t        STATEDIR/text/new/foo
      
      This has the following advantages:
      1. No more ugly folder path building all over the place
      2. STATEDIR and PATHSIZE used in far fewer places
      3. No longer assumes paths to folder files will fit in 256 chars
      4. A tidier STATEDIR
      5. Better separation of concerns (more folder stuff hidden in folders.c)
      6. Should make it easier to move the folder stuff into the server
      7. Improved error checking/reporting
      
      This makes use of the *at family of syscalls so, instead of building
      paths, we now use file descriptors.
      6bcd1e4b
  5. Oct 23, 2015
  6. Oct 21, 2015
  7. Oct 19, 2015
  8. Oct 18, 2015
    • Andrew Price's avatar
      Add a configuration system to the server · 83256d1c
      Andrew Price authored
      Until now configuring mwserv has been limited to command line options
      and build configuration. This config system should make things a bit
      more flexible by adding the ability to load bits and pieces from a
      json config file (or many json config files).
      
      This is how it works:
      1. A json object 'cfg' is built containing the build-time defaults for
         each config option recognised by mwserv. This will be used to
         validate the options in config files later.
      2. A json config file in the user's home directory is loaded if it
         exists. It does not have to be complete: its contents will be merged
         into the defaults. Unrecognised options are ignored.
      3. Otherwise, a config file in /etc is loaded and used similarly.
      4. Command line options are parsed and the cfg object is updated with
         cfg_set_* in the order in which the options are found.
         4a. If the [--config|-c <file>] option is encountered, the file is
         loaded and merged into the cfg object as before.
      5. Once all of the config information is gathered and merged into the
         cfg object, if the [--print-config|-P] option was given, the final
         merged config is printed in json format (mwserv then exits).
      6. Config options are then accessed using the cfg_get_* type-specific
         functions.
      
      This should allow the build system to be simplified in future, e.g.
      'make test' could go away in favour of using ~/.mwserv.conf to store
      the test environment configuration.
      
      For now, the place to add new config options and their default values is
      in cfg_init_defaults() in servercfg.c.
      83256d1c
  9. Oct 17, 2015
  10. Oct 12, 2015
  11. Oct 08, 2015
  12. Oct 07, 2015
  13. Oct 06, 2015
  14. Oct 05, 2015
  15. Oct 02, 2015
  16. Sep 29, 2015
  17. Sep 25, 2015
  18. Sep 24, 2015
  19. Sep 22, 2015
  20. Sep 21, 2015
  21. Nov 02, 2013
  22. Nov 01, 2013
  23. Oct 31, 2013
    • Andrew Price's avatar
      Split out the who file stuff from files.* into who.* and tidy up the code a... · 99262954
      Andrew Price authored
      Split out the who file stuff from files.* into who.* and tidy up the code a bit. Intention here is to modularise the who file code so that it can be replaced with a server-managed sqlite db (or whatever) easily in future. There's still a lot of code which does its own operations on the who file with read() and lseek() so a good next step will be to hide that code behind an iterator or similar.
      
      99262954
    • Andrew Price's avatar
      Split out the common bits from the client bits: · 94f5a00a
      Andrew Price authored
      - Move as much of mw into src/client/ as possible
      - Make sure everything that mwserv and webclient require is in src/
      - Build a libmw.a from src/*.o to make linking easier
      - Rejig and simplify some Makefile rules
      
      This should help to make it clear which bits of code are shared and which are specific to the UI. We should avoid putting any user interface stuff into libmw.a as a rule.
      
      TODO:
      - Improve some file names (e.g. sqlite.{c,h} is a silly name)
      - Fix building the utils
      - Add sensible svn:ignores to src/client
      
      94f5a00a
  24. Feb 13, 2013
Loading