Synchronet now requires the libarchive development package (e.g. libarchive-dev on Debian-based Linux distros, for more info) to build successfully.

  1. 20 Aug, 2019 1 commit
  2. 08 Aug, 2019 1 commit
  3. 04 Aug, 2019 1 commit
  4. 15 Jul, 2019 1 commit
    • rswindell's avatar
      New global JS function: file_mode() · f1ed1c6b
      rswindell authored
      This function behaves the same as file_attrib() on *nix, but on Windows,
      file_mode() returns a *nix/stat style st_mode value (compatible with
      file_chmod) while file_attrib() returns the struct _finddata_t 'attrib' value,
      which is a quite different value (e.g. indicates Windows/DOS centric file
      attributes like "archive", "hidden", etc.) and is *incompatible* with
      file_chmod(). So if you're going to modify a file's permissions (mode), use
      file_mode() to read them and file_chmod() to save them.
      file_attrib() should really only be used on Windows and only for checking for
      attributes like "hidden", "archive", etc. (which don't exist on *nix).
  5. 14 Jul, 2019 1 commit
  6. 08 Jul, 2019 1 commit
  7. 20 May, 2019 1 commit
  8. 09 May, 2019 1 commit
  9. 06 May, 2019 1 commit
  10. 04 May, 2019 2 commits
    • rswindell's avatar
    • rswindell's avatar
      Define and use a wrapper for JS_GetInstancePrivate(): js_GetClassPrivate() · 6f83c4ff
      rswindell authored
      Use this in place of JS_GetPrivate() in native class methods that need the
      class instance's private data pointer and will do bad things if that pointer
      points to something other than what is expected. mcmlxxix (matt) discovered
      that using Object.apply(), you can invoke class methods where the 'this'
      instance is a different class. This would result in
      "Internal Error: No Private Data." or a crash.
      So now, gracefully detect this condition and report a meaningful error:
      "'<class-name>' instance: No Private Data or Class Mismatch"
      Also, important to note: if the method uses JS_THIS_OBJECT to get the JSObject*
      to pass to JS_Get*Private, then it must do this *before* it calls JS_SET_RVAL.
      From jsapi.h:
       * NB: there is an anti-dependency between JS_CALLEE and JS_SET_RVAL: native
       * methods that may inspect their callee must defer setting their return value
       * until after any such possible inspection. Otherwise the return value will be
       * inspected instead of the callee function object.
      The js_crypt*.c files still need this treatment.
  11. 23 Apr, 2019 1 commit
  12. 20 Jan, 2019 1 commit
    • rswindell's avatar
      The "stdio" File objects (stdin, stdout, stderr) did not work on Windows, · 7acadb70
      rswindell authored
      because the stdout FILE* is a different address in jsexec than it is in sbbs.dll
      (where the actual File I/O operations occurred). Refactored by passing the
      stdio file descriptor (and open mode) to js_CreateFileObject rather than the
      FILE* and using fdopen() to get a FILE* associated with the descriptor.
      stdout.write() now works, for example.
  13. 11 Jan, 2019 1 commit
    • rswindell's avatar
      A partial retraction of the Ctrl-AZ interpretation changes introduced on · b2412964
      rswindell authored
      It turns out, PabloDraw actually inserts a Ctrl-AZ sequence at the end of .msg
      (and presumably Synchronet .asc) files it edits - before the SAUCE record.
      This resulted in a printed Ctrl-Z character (arrow pointing right) in most
      terminals when viewing text/menu files created or edited with PabloDraw. :-(
      So, now Ctrl-AZ (uppercase) will revert to the previous definition:
      premature end-of-file (EOF)
      and a Ctrl-Az (lowercase) will output a Ctrl-Z (substitute) character.
      I'm not a big fan of case-sensitive Ctrl-A codes, but frankly, running out of
      chars and I already started this pattern with the Ctrl-AF/f sequences.
      Hopefully there's no existing software that is/was putting Ctrl-Az (lowercase)
      in files, expecting that to trigger a premature EOF. I certainly was not.
  14. 15 Oct, 2018 1 commit
  15. 06 Apr, 2018 1 commit
  16. 10 Mar, 2018 2 commits
  17. 09 Mar, 2018 2 commits
  18. 22 Feb, 2018 1 commit
  19. 20 Feb, 2018 2 commits
  20. 16 Nov, 2017 1 commit
  21. 29 Nov, 2016 1 commit
  22. 19 Nov, 2016 2 commits
    • sbbs's avatar
      pthread thread names are limited to 15 chars (not including nul terminator) · f3da24f7
      sbbs authored
      so use shorter thread names.
    • sbbs's avatar
      Fixed high-CPU utilization after server recycling issue: if the sem_chk_freq · 324c41ba
      sbbs authored
      value is missing or set to 0 in the sbbs.ini file, the sanity checking this
      value (setting it to 2 seconds) will not occur after a server recycle and the
      sbbs.ini is re-parsed. So if for any reason, the sem_chk_freq value becomes
      0, these server threads won't hog the CPU because they all YIELD at the
      top of thier main loops.
      Also, changed all the thread names (e.g. adding "sbbs/" prefix), so they're
      more sensible in the Linux 'top' output.
      Also, started adding 'vi' modelines to auto-set tabstops when using vi/vim.
  23. 24 Apr, 2016 3 commits
  24. 23 Apr, 2016 2 commits
  25. 26 Feb, 2016 1 commit
  26. 21 Jan, 2016 1 commit
  27. 03 Jan, 2016 1 commit
  28. 18 Nov, 2015 1 commit
  29. 16 Nov, 2015 1 commit
  30. 15 Nov, 2015 2 commits
  31. 08 Nov, 2015 1 commit
    • deuce's avatar
      Use the same global methods for background threads as foreground ones. · ff2ce734
      deuce authored
      Once again, actually using these is NOT SAFE, you need to pay very close
      attention to the C source code to know what functions you can use in multiple
      The log function gets overwritten, so it should remain somewhat safe, but
      everything else is a potential bug in your background script.