Both sides previous revisionPrevious revisionNext revision | Previous revision |
dev:source [2015/08/27 18:04] – Updated to reflect current release and archiving. digital man | dev:source [2024/12/28 20:59] (current) – [Tabs] Include example curl command-line to install Vim PTSC plugin digital man |
---|
====== Source Code ====== | ====== Source Code ====== |
| |
Synchronet is free open source software. You can get the current (or older) source (mostly in C) from the Synchronet [[dev: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 [[bbs:Vertrauen]]: | Synchronet is free open source software. You can get the current (or older) source (mostly in C) from the Synchronet [[dev:Git]] repository (using a Git client or a web browser) or you can download the most recently successfully built snapshot of the source code from [[bbs:Vertrauen]]: |
| |
===== For Windows (32-bit x86) ===== | ===== Static Analysis ===== |
* Latest successfully built code (nightly): ''[[ftp://bbs.synchro.net/Synchronet/sbbs_src.zip|sbbs_src.zip]]'' | |
* Latest release (v3.16c) ''[[ftp://vert.synchro.net/Synchronet/ssrc316c.zip|ssrc316c.zip]]'' | |
| |
===== For Linux ===== | The Synchronet project is statically-analyzed for defects nightly (using a Linux-x64 build). See http://scan.coverity.com/projects/synchronet for details. |
* Latest successfully built code (nightly): ''[[ftp://bbs.synchro.net/Synchronet/sbbs_src.tgz|sbbs_src.tgz]]'' | ===== Windows ===== |
* Latest release (v3.16c) ''[[ftp://vert.synchro.net/Synchronet/ssrc316c.tgz|ssrc316c.tgz]]'' | Windows binaries are built targeting 32-bit x86 ("Win32") and are intended to be compatible with PCs (or VMs) running Microsoft Windows XP (SP3) and later. We use a combination of Microsoft Visual Studio/C++ (for the majority) and Borland (for a few GUI components) build/make systems. |
| |
| * Latest successfully built code ([[https://gitlab.synchro.net/main/sbbs/-/tree/dailybuild_win32|nightly branch]]): ''[[http://synchro.net/Synchronet/sbbs_src.zip|sbbs_src.zip]]'' |
| * Latest release (v3.19b) ''[[http://synchro.net/Synchronet/ssrc319b.zip|ssrc319b.zip]]'' |
| |
| ===== UNIX ===== |
| All non-Windows systems supported are UNIX-Like (e.g. Linux, FreeBSD) operating systems running on 32-bit or 64-bit Intel/AMD-compatible x86 processors and some 32-bit or 64-bit little-endian ARM processors. We use GNU Make as the build system though some included (and built-from-source) 3rd party libraries (e.g. cryptlib and libmozjs) might use more complicated build systems, e.g. requiring Perl or Python. |
| |
| * Latest successfully built code ([[https://gitlab.synchro.net/main/sbbs/-/tree/dailybuild_linux-x64|nightly branch]]): ''[[http://synchro.net/Synchronet/sbbs_src.tgz|sbbs_src.tgz]]'' |
| * Latest release (v3.19b) ''[[http://synchro.net/Synchronet/ssrc319b.tgz|ssrc319b.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 80x25 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 ''[[http://editorconfig.org|.editorconfig]]'' file found in the Synchronet ''src'' and ''[[dir:exec]]'' directories. If you use a text viewer or editor that supports the ''.editorconfig'' file or [[http://synchro.net/ptsc_hdr.html|PT/SC (@format...) headers]], the Synchronet source files should display and edit as intended, automatically. |
| |
| === Vim === |
| If you use the [[https://www.vim.org/|Vim]] text editor, consider installing [[https://www.vim.org/scripts/script.php?script_id=4122|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. |
| |
| curl --create-dirs 'https://www.vim.org/scripts/download_script.php?src_id=18234' -o ~/.vim/plugin/ptsc-header.vim |
| |
| ==== 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 ===== | ===== 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): | 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): |
| |
* ''sbbs_run.tgz'' [[ftp://bbs.synchro.net/Synchronet/sbbs_run.tgz|ftp]] [[http://bbs.synchro.net/Synchronet/sbbs_run.tgz|http]] | * ''sbbs_run.tgz'' [[ftp://vert.synchro.net/Synchronet/sbbs_run.tgz|ftp]] [[http://synchro.net/Synchronet/sbbs_run.tgz|http]] |
* ''sbbs_run.zip'' [[ftp://bbs.synchro.net/Synchronet/sbbs_run.zip|ftp]] [[http://bbs.synchro.net/Synchronet/sbbs_run.zip|http]] | * ''sbbs_run.zip'' [[ftp://vert.synchro.net/Synchronet/sbbs_run.zip|ftp]] [[http://synchro.net/Synchronet/sbbs_run.zip|http]] |
| |
| |
| ===== Copyright ===== |
| |
| Synchronet BBS Software Version 3 is Copyright by Rob Swindell. Synchronet is comprised of several documentation, library, executable, and source code files, all of which are covered by version 2 of the GNU General Public License (GPLv2) with the exception of the following portions covered by the GNU Lesser General Public License (LGPL): XPDEV, SMBLIB, CIOLIB, UIFC, and XSDK. |
| |
| What this means is that Synchronet Version 3 is free software in the sense that it is free of price and that you have the freedom to use, modify, and re-distribute the software, provided you pass these rights on to users of modified and/or re-distributed versions of the software (LGPL'ed portions exempted). Synchronet Version 3 also falls under the definition of Open Source software. |
| |
| Synchronet Version 2 (for DOS and OS/2) and its source code was released to the Public Domain by Digital Dynamics in 1997 and remains Public Domain software today. Synchronet Version 3 is not Public Domain software. |
===== See Also ===== | ===== See Also ===== |
| |