This is an old revision of the document!
Table of Contents
Source Code
Synchronet is free open source software. You can get the current (or older) source (mostly in C) from the Synchronet CVS repository (using a CVS client or a web browser) or you can download the most recently successfully built snapshot of the source code from Vertrauen:
For Windows (32-bit x86)
- Latest successfully built code (nightly):
sbbs_src.zip
- Latest release (v3.16c)
ssrc316c.zip
For Linux
- Latest successfully built code (nightly):
sbbs_src.tgz
- Latest release (v3.16c)
ssrc316c.tgz
Style
At this time, the Synchronet C/C++ source code consists of a variety of styles (i.e. naming, white-space, etc.). The most obvious distinction in style is that older code uses a more condensed/terse style (i.e. for maximum content in an 80×25 terminal) while newer or refactored code uses a more verbose/readable style. A project-wide source code beautification effort (using uncrustify
) is planned.
Tabs
The tab character (ASCII 9) is used for indentation and alignment in most files (e.g. *.c, *.cpp, *.h, *.js
), however the use of tabs for indentation and spaces for alignment is also acceptable. Using spaces for indentation is not acceptable.
Most Synchronet source files are created and edited using text editors configured for 4-space tab-stops. This tab preference is reflected in the “@format.tab-size 4” and “@format.use-tabs true” blurb in each file's header-comment block as well as the .editorconfig
file found in the Synchronet src
and exec
directories. If you use a text viewer or editor that supports the .editorconfig
file or PT/SC (@format...) headers, the Synchronet source files should display and edit as intended, automatically.
Vim
If you use the Vim text editor, consider installing this plugin to enable support for the PT/SC headers found in Synchronet source files, to automatically set the tab-stops accordingly when editing Synchronet source files.
C99
Most of the C/C++ source code is built using only compilers support C99 and newer standards, however some libraries (e.g. xpdev
), are still built using older (Borland) C compilers that do not support the full C99 standard. For those Synchronet libraries, care must be taken to *not* use newer C language constructs and standard library functions/types.
Run-time files
While technically not source code, if you have not already installed Synchronet, you will also need the run-time files (the .zip
file contains files with Windows style line endings, while the .tgz
contains files with Unix style line endings):