From: Kevin Day Date: Sat, 7 May 2022 16:22:04 +0000 (-0500) Subject: Import: Initial import of kevux.org website from 2022/05/06 publish. X-Git-Url: https://git.kevux.org/?a=commitdiff_plain;h=526b3f0056e507d3d97ec4ca85861330e6163ed5;p=kevux.org-website Import: Initial import of kevux.org website from 2022/05/06 publish. --- 526b3f0056e507d3d97ec4ca85861330e6163ed5 diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..5b69a3b --- /dev/null +++ b/.htaccess @@ -0,0 +1,13 @@ +RewriteEngine on + +ErrorDocument 403 /access_denied.html +ErrorDocument 404 /not_found.html + +RewriteCond %{REQUEST_FILENAME} -f +RewriteRule . - [L] + +RewriteBase "/" +RewriteCond %{REQUEST_FILENAME} -d +RewriteCond %{REQUEST_FILENAME} ^(.*)/ +RewriteCond %1.html -f +RewriteRule ^(.*)/ $1.html [R=301,L,QSA] diff --git a/access_denied.html b/access_denied.html new file mode 100644 index 0000000..3ee7f72 --- /dev/null +++ b/access_denied.html @@ -0,0 +1,85 @@ + + + + Kevux Systems and Software - Access Denied (403) + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Access Denied (403)

+
+ +
+

+ Please go back or consider visiting to the News page. +

+
+
+
+
+ + diff --git a/css/kevux-print-landscape.css b/css/kevux-print-landscape.css new file mode 100644 index 0000000..a73f037 --- /dev/null +++ b/css/kevux-print-landscape.css @@ -0,0 +1,3 @@ +.kevux > .content-block > .main-block .grid.expand.columns-4 { + grid-template-columns: auto auto auto auto; +} diff --git a/css/kevux-print-portrait.css b/css/kevux-print-portrait.css new file mode 100644 index 0000000..ff3d339 --- /dev/null +++ b/css/kevux-print-portrait.css @@ -0,0 +1,3 @@ +.kevux > .content-block > .main-block .grid.expand.columns-4 { + grid-template-columns: auto auto auto; +} diff --git a/css/kevux-print.css b/css/kevux-print.css new file mode 100644 index 0000000..4908df8 --- /dev/null +++ b/css/kevux-print.css @@ -0,0 +1,18 @@ +.kevux > .header-block { + display: none; +} + +.kevux > .content-block > .nav-block { + display: none; +} + +.kevux > .content-block > .main-block > .main { + flex: auto; +} + +.kevux > .content-block > .main-block .header.separate > .h, +.kevux > .content-block > .main-block > .main .header > .h1 { + border-bottom: 1px solid; + padding-bottom: 1rem; + margin-bottom: 8px; +} diff --git a/css/kevux-screen-desktop.css b/css/kevux-screen-desktop.css new file mode 100644 index 0000000..c35d30a --- /dev/null +++ b/css/kevux-screen-desktop.css @@ -0,0 +1,45 @@ +:root { + --width_side: 150px; +} + +.kevux > .content-block { + display: flex; +} + +.kevux > .content-block > .nav-block { + word-break: normal; + + min-height: calc(var(--height_screen) - var(--height_header_site)); + + min-width: 150px; + max-width: 240px; + + border-right: 1px dashed #556000; + border-bottom: 1px dashed #556000; + border-left: 1px dashed #556000; +} + +.kevux > .content-block > .nav-block > .nav-menu > .nav-item { + padding: 4px 0px; +} + +.kevux > .content-block > .nav-block > .nav-menu > .nav-item:not(:last-of-type) { + border-bottom: 1px dashed #556000; +} + +.kevux > .content-block > .nav-block > .nav-menu > .nav-item.ellipses { + display: none; +} + +.kevux > .content-block > .nav-block > .nav-menu > .nav-item.unlink { + border-left: 1px dashed #556000; + border-right: 1px dashed #556000; +} + +.kevux > .content-block > .nav-block > .nav-menu > .nav-item:first-of-type.unlink { + border-top: 1px dashed #556000; +} + +.kevux > .content-block > .nav-block > .nav-menu > .nav-item:last-of-type.unlink { + border-top: 1px dashed #556000; +} diff --git a/css/kevux-screen-large.css b/css/kevux-screen-large.css new file mode 100644 index 0000000..7987361 --- /dev/null +++ b/css/kevux-screen-large.css @@ -0,0 +1,51 @@ +.kevux { + font-size: 1.2rem; + line-height: 1.6rem; +} + +.kevux > .header-block > .header-section > .header-site { + font-size: 1.3rem; + line-height: 1.7rem; + overflow: hidden; + + min-width: 550px; +} + +.kevux > .header-block > .nav-block { + font-size: 1.0rem; + line-height: 1.4rem; + overflow: hidden; + + box-sizing: border-box; + + min-width: 550px; +} + +.kevux > .content-block > .nav-block > .nav-menu { + margin: 10px 4px 10px 4px; + + font-size: 1.0rem; + line-height: 1.4rem; +} + +.kevux .header > .h1 { + font-size: 1.5rem; + line-height: 1.9rem; +} + +.kevux .header > .h2 { + font-size: 1.4rem; + line-height: 1.8rem; +} + +.kevux .header > .h3, +.kevux .header > .h4, +.kevux .header > .h5, +.kevux .header > .h6 { + font-size: 1.3rem; + line-height: 1.7rem; +} + +.kevux > .content-block > .main-block .grid.expand.columns-4 { + grid-template-columns: auto auto auto auto; +} diff --git a/css/kevux-screen-mobile.css b/css/kevux-screen-mobile.css new file mode 100644 index 0000000..b776a7a --- /dev/null +++ b/css/kevux-screen-mobile.css @@ -0,0 +1,63 @@ +.kevux > .content-block > .nav-block { + position: fixed; + bottom: 0px; + + box-sizing: border-box; + + border-top: 1px dashed #556000; + + width: 100%; + z-index: 1; +} + +.kevux > .content-block > .nav-block > .nav-menu > .nav-item > .nav-text.link { + text-decoration: underline; + + padding: 2px 0px; +} + +.kevux > .content-block > .nav-block:target { + position: initial; + + width: 100vw; + + border-top: 0px; + border-bottom: 1px dashed #556000; +} + +.kevux > .content-block > .nav-block:target > .nav-menu > .nav-item:not(:last-of-type) { + border-bottom: 1px dashed #556000; +} + +.kevux > .content-block > .nav-block:not(:target) > .nav-menu { + padding-bottom: 10px; +} + +.kevux > .content-block > .nav-block:not(:target) > .nav-menu > .nav-item > .nav-text { + display: none; +} + +.kevux > .content-block > .nav-block:target > .nav-menu > .nav-item, +.kevux > .content-block > .nav-block:target > .nav-menu > .nav-item.ellipses { + padding: 5px 0px; +} + +.kevux > .content-block > .nav-block:target > .nav-menu > .nav-item > .nav-text, +.kevux > .content-block > .nav-block:target > .nav-menu > .nav-item.ellipses > .nav-text.close, +.kevux > .content-block > .nav-block:not(:target) > .nav-menu > .nav-item.ellipses > .nav-text.open { + display: block; +} + +.kevux > .content-block > .nav-block:target > .nav-menu > .nav-item.ellipses > .nav-text.open, +.kevux > .content-block > .nav-block:not(:target) > .nav-menu > .nav-item.ellipses > .nav-text.close { + display: none; +} + +.kevux > .content-block > .nav-block > .nav-menu > .nav-item, +.kevux > .content-block > .nav-block > .nav-menu > .nav-item.ellipses { + text-align: center; +} + +.kevux > .content-block > .main-block { + margin-bottom: 35px; +} diff --git a/css/kevux-screen-normal.css b/css/kevux-screen-normal.css new file mode 100644 index 0000000..76f2812 --- /dev/null +++ b/css/kevux-screen-normal.css @@ -0,0 +1,51 @@ +.kevux { + font-size: 1.0rem; + line-height: 1.4rem; +} + +.kevux > .header-block > .header-section > .header-site { + font-size: 1.1rem; + line-height: 1.5rem; + overflow: hidden; + + min-width: 450px; +} + +.kevux > .header-block > .nav-block { + font-size: 0.8rem; + line-height: 1.2rem; + overflow: hidden; + + box-sizing: border-box; + + min-width: 380px; +} + +.kevux > .content-block > .nav-block > .nav-menu { + margin: 10px 4px 10px 4px; + + font-size: 0.8rem; + line-height: 1.2rem; +} + +.kevux .header > .h1 { + font-size: 1.3rem; + line-height: 1.7rem; +} + +.kevux .header > .h2 { + font-size: 1.2rem; + line-height: 1.6rem; +} + +.kevux .header > .h3, +.kevux .header > .h4, +.kevux .header > .h5, +.kevux .header > .h6 { + font-size: 1.1rem; + line-height: 1.5rem; +} + +.kevux > .content-block > .main-block .grid.expand.columns-4 { + grid-template-columns: auto auto auto; +} diff --git a/css/kevux-screen-small.css b/css/kevux-screen-small.css new file mode 100644 index 0000000..5d55f1b --- /dev/null +++ b/css/kevux-screen-small.css @@ -0,0 +1,47 @@ +.kevux { + font-size: 0.9rem; + line-height: 1.3rem; +} + +.kevux > .header-block { + min-height: 50px; + max-height: 50px; +} + +.kevux > .header-block > .header-section > .header-site { + font-size: 0.8rem; + line-height: 1.2rem; + overflow: hidden; + + min-width: 350px; +} + +.kevux > .header-block > .nav-block { + font-size: 0.6rem; + line-height: 1.0rem; + overflow: hidden; + + min-width: 350px; +} + +.kevux .header > .h1 { + font-size: 1.2rem; + line-height: 1.6rem; +} + +.kevux .header > .h2 { + font-size: 1.1rem; + line-height: 1.5rem; +} + +.kevux .header > .h3, +.kevux .header > .h4, +.kevux .header > .h5, +.kevux .header > .h6 { + font-size: 1.0rem; + line-height: 1.4rem; +} + +.kevux > .content-block > .main-block .grid.expand.columns-4 { + grid-template-columns: auto auto; +} diff --git a/css/kevux-screen-tiny.css b/css/kevux-screen-tiny.css new file mode 100644 index 0000000..b31cc26 --- /dev/null +++ b/css/kevux-screen-tiny.css @@ -0,0 +1,49 @@ +.kevux { + font-size: 0.6rem; + line-height: 1.0rem; + + min-width: 170px; +} + +.kevux > .header-block { + min-height: 40px; + max-height: 40px; +} + +.kevux > .header-block > .header-section > .header-site { + font-size: 0.7rem; + line-height: 1.1rem; + overflow: hidden; + + min-width: 250px; +} + +.kevux > .header-block > .nav-block { + font-size: 0.5rem; + line-height: 0.9rem; + overflow: hidden; + + min-width: 250px; +} + +.kevux .header > .h1 { + font-size: 0.9rem; + line-height: 1.3rem; +} + +.kevux .header > .h2 { + font-size: 0.8rem; + line-height: 1.2rem; +} + +.kevux .header > .h3, +.kevux .header > .h4, +.kevux .header > .h5, +.kevux .header > .h6 { + font-size: 0.7rem; + line-height: 1.1rem; +} + +.kevux > .content-block > .main-block .grid.expand.columns-4 { + grid-template-columns: auto; +} diff --git a/css/kevux-screen.css b/css/kevux-screen.css new file mode 100644 index 0000000..1d0b938 --- /dev/null +++ b/css/kevux-screen.css @@ -0,0 +1,116 @@ +.kevux { + box-sizing: border-box; +} + +.kevux > .header-block { + position: relative; + box-sizing: border-box; + + height: var(--height_header_site); + min-height: var(--height_header_site); + max-height: var(--height_header_site); + + overflow: hidden; + + border: 1px dashed #556000; + + font-family: monospace; + + color: #000000; + background-color: #a7c4a8; +} + +.kevux > .header-block > .header-section > .header-site { + position: absolute; + top: 0px; + + margin: 3px 6px; +} + +.kevux > .header-block > .nav-block { + position: absolute; + bottom: 0px; + + box-sizing: border-box; +} + +.kevux > .header-block > .nav-block > .nav-menu { + display: block; +} + +.kevux > .header-block > .nav-block > .nav-menu > .nav-item { + display: inline-block; + vertical-align: top; + box-sizing: border-box; + + padding: 2px 4px; + border-width: 1px 1px 0px 1px; + border-color: #556000; + border-style: dashed; + border-radius: 4px 4px 0px 0px; + + text-align: center; + word-wrap: break-word; + + background-color: #87d686; +} + +.kevux > .header-block > .nav-block > .nav-menu > .nav-item.active { + background-color: #83e969; +} + +.kevux > .header-block > .nav-block > .nav-menu > .nav-item:first-of-type { + margin-left: 4px; +} + +.kevux > .header-block > .nav-block > .nav-menu > .nav-item:last-of-type { + margin-right: 4px; +} + +.kevux > .header-block > .nav-block > .nav-menu > .nav-item:focus-within, +.kevux > .header-block > .nav-block > .nav-menu > .nav-item:hover { + background-color: #d8e560; +} + +.kevux > .content-block > .nav-block { + position: relative; + padding: 2px; +} + +.kevux > .content-block > .nav-block > .nav-menu > .nav-item > .nav-text.notice { + font-weight: bold; +} + +.kevux > .content-block > .main-block { + display: flex; + position: relative; + + padding: 8px; + + width: 100%; +} + +.kevux > .content-block > .main-block > .main { + flex: auto; +} + +.kevux > .content-block > .main-block > .main .header > .h1 { + border-bottom: 1px dashed #556000; + margin-bottom: 8px; +} + +.kevux > .content-block .header { + margin-bottom: 4px; +} + +.kevux .header > .h1, +.kevux .header > .h2, +.kevux .header > .h3, +.kevux .header > .h4, +.kevux .header > .h5, +.kevux .header > .h6 { + display: block; + + margin: 0px; + padding: 0px; +} diff --git a/css/kevux.css b/css/kevux.css new file mode 100644 index 0000000..b66a6d4 --- /dev/null +++ b/css/kevux.css @@ -0,0 +1,175 @@ +:root { + font-size: 13px; + + --height_screen: 100vh; + --height_header_site: 65px; + + --width_screen: 100vw; + --width_screen_90: 90vw; + --width_side: 0px; +} + +.kevux { + box-sizing: border-box; + + line-height: 1.4rem; + + margin: 0px; + padding: 0px; +} + +.kevux > .header-block > .nav-block > .nav-menu > .nav-item > .nav-text.link, +.kevux > .header-block > .nav-block > .nav-menu > .nav-item > .nav-text.link:visited { + color: #000000; + text-decoration: none; +} + +.kevux > .header-block > .nav-block > .nav-menu > .nav-item > .nav-text.link:active, +.kevux > .header-block > .nav-block > .nav-menu > .nav-item > .nav-text.link:focus, +.kevux > .header-block > .nav-block > .nav-menu > .nav-item > .nav-text.link:hover { + text-decoration: underline; +} + +.kevux > .content-block { + box-sizing: border-box; +} + +.kevux > .content-block > .nav-block { + box-sizing: border-box; + + color: #000000; + background-color: #c5e6c4; +} + +.kevux > .content-block > .nav-block > .nav-menu > .nav-item { + box-sizing: border-box; + + text-align: center; +} + +.kevux > .content-block > .nav-block > .nav-menu > .nav-item > .nav-text { + font-family: monospace; +} + +.kevux > .content-block > .nav-block > .nav-menu > .nav-item > .nav-text.notice { + font-family: serif; +} + +.kevux > .content-block > .nav-block > .nav-menu > .nav-item > .nav-text.link, +.kevux > .content-block > .nav-block > .nav-menu > .nav-item > .nav-text.link:visited { + color: #000000; + text-decoration: none; +} + +.kevux > .content-block > .nav-block > .nav-menu > .nav-item > .nav-text.link:active, +.kevux > .content-block > .nav-block > .nav-menu > .nav-item > .nav-text.link:focus, +.kevux > .content-block > .nav-block > .nav-menu > .nav-item > .nav-text.link:hover { + display: block; + + font-weight: bold; + background-color: #e5f5c9; + text-decoration: underline; +} + +.kevux > .content-block > .nav-block > .nav-menu > .nav-item.unlink, +.kevux > .content-block > .nav-block > .nav-menu > .nav-item > .nav-text.unlink { + display: block; + + font-weight: normal; + background-color: #e5f5c9; +} + +.kevux > .content-block > .main-block { + box-sizing: border-box; +} + +.kevux > .content-block > .main-block a, +.kevux > .content-block > .main-block a:visited { + color: #0000ee; +} + +.kevux > .content-block > .main-block a:active { + color: #ee0000; +} + +.kevux > .content-block > .main-block .header.separate > .h { + border-bottom: 1px dashed #556000; + margin-bottom: 8px; +} + +.kevux > .content-block > .main-block .grid { + column-gap: 1rem; +} + +.kevux > .content-block > .main-block .grid.wide { + display: grid; +} + +.kevux > .content-block > .main-block .grid.narrow { + display: inline-grid; +} + +.kevux > .content-block > .main-block .table, +.kevux > .content-block > .main-block .table > .set, +.kevux > .content-block > .main-block .table > .set > .row +.kevux > .content-block > .main-block .table > .set > .column { + box-sizing: border-box; +} + +.kevux > .content-block > .main-block .center { + display: block; + box-sizing: border-box; + + margin-left: auto; + margin-right: auto; + + width: max-content; +} + +.kevux > .content-block > .main-block .table { + border-collapse: collapse; + margin: 1rem; + + max-width: calc(var(--width_screen_90) - var(--width_side)); +} + +.kevux > .content-block > .main-block .table > .head { + border-bottom: 1px solid black; +} + +.kevux > .content-block > .main-block .table > .set > .row > .column { + padding: 2px 0.5rem; +} + +.kevux > .content-block > .main-block .table > .set > .row > .column:not(:last-of-type) { + border-right: 1px dotted; +} + +.kevux.documentation > .content-block > .main-block .dl { + border: 1px solid #e0e0e0; + + width: fit-content; +} + +.kevux.documentation > .content-block > .main-block .dl > .di { + padding: 4px; +} + +.kevux.documentation > .content-block > .main-block .dl > .di > .dt { + font-weight: bold; + + padding: 2px; +} + +.kevux.documentation > .content-block > .main-block .dl > .di:nth-child(odd) { + background-color: #efefef; +} + + +.kevux.documentation > .content-block > .main-block .table.context-parameters > .set > .row:nth-child(even) { + background-color: #efefef; +} + +.kevux.documentation > .content-block > .main-block .table.context-parameters > .set > .row > .column:nth-child(1) { + text-align: center; +} diff --git a/distributions.html b/distributions.html new file mode 100644 index 0000000..2b1f12f --- /dev/null +++ b/distributions.html @@ -0,0 +1,214 @@ + + + + Kevux Systems and Software - Distributions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Distributions

+
+ +
+
+

Turtle Kevux

+
+
+

+ Turtle Kevux is a Linux system primarily based on GNU software, FLL software, and a Linux kernel. Historically Turtle Kevux was compiled using uClibc as an alternative to GLibc. Turtle Kevux now uses Musl-Libc in place of GLibc. +

+

+ This Linux based distribution deviates from Linux and even utilizes modifications to the Linux kernel. Turtle Kevux does not comply with many of the standards that many Linux distributions follow. This is especially true when it comes to SystemD as many parts of the SystemD design is the direct opposite of how Turtle Kevux and its underlying software (FLL) are designed. +

+

+ Turtle Kevux is neither FHS nor LSB compliant, which is seen as one of the many security enhancements. Turtle Kevux might closely follow these standards, but those standards are deviated from as desired. +

+
+
+ +
+
+

About Releases and Scripts

+
+
+

+ The Turtle Kevux Releases used to provide multiple CD-ROM and DVD-ROMs for different purposes. These have been reduced to the "everything" releases for the older Turtle Kevux releases (0.9.5 and earlier). The "everything" release contains all of the software specially configured to compile and install onto the system as well as all source code archives. +

+

+ The Turtle Kevux Installation Scripts are also provided separately from the DVD-ROMs. These scripts can be used to compile the system entirely from source. Due to the complexity and potential problems with compiling entirely from source, the pre-compiled bootstrap files are also made available as the "tools" downloads. +

+
+
+ + + + +
+
+
+ + diff --git a/distributions/turtle/changelog.html b/distributions/turtle/changelog.html new file mode 100644 index 0000000..c7fb3f8 --- /dev/null +++ b/distributions/turtle/changelog.html @@ -0,0 +1,196 @@ + + + + Change Log - Turtle Kevux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Turtle Kevux Change Logs

+
+ +
+
+

0.9.5

+
+
+ +
Fixes of Turtle 0.9.4 Problems:
+
    +
  • A large number of kiwi installation problems have been fixed.
  • +
  • claws-mail now works.
  • +
  • The mpd music server now dmixes properly by default so you can now have more than one program use audio at the same time.
  • +
  • Fixed applications that did not look for the mixer device in /dev/snd/mixer.
  • +
  • /lib/libudev.so and /lib/libgudev-1.0.so had permissions that prevented desktop users from using any application that depended on either of those libraries.
  • +
  • Copy and paste on the desktop now works in xfce.
  • +
  • 64-bit grub cdroms now boot properly.
  • +
  • Fixed boot problems when using software raid.
  • +
+ +
New Software:
+
    +
  • Added libffi
  • +
  • Added vcdimager
  • +
  • Added libblueray
  • +
  • Added libaacs
  • +
+ +
Other Changes:
+
    +
  • Now using xorg-server 1.11.* and Mesa 7.11.*.
  • +
  • Fixed webkit so that SoupSession is in the correct state to allow for pausing and unpausing.
  • +
  • The boot process was reworked.
  • +
+
+ +
+
+

0.9.4

+
+
+ +
Fixes of Turtle 0.9.3 Problems:
+
    +
  • Fix major networking problem in 0.9.3 where devices are improperly started
  • +
  • Once again attempt to solve the autologin relogin problem with qingy (this time completely strip out the code that does a timestamp check, if the file exists then do not re-login, period
  • +
  • When shutting down or rebooting, make sure to tell all sshd connections to close and turn off network devices
  • +
  • Network scripts did not stop dhcpclient, wpa_supplicant, and hostap if it was running when the network script was stopped
  • +
  • /etc/hosts was being used instead of /etc/network/hosts
  • +
  • Fixed initrd boot process problems
  • +
  • Removed floating_root parameter from squish and squash boot options, making floating_root unconditional for squash and squash booting
  • +
+ +
New Software:
+
    +
  • Added joy2key
  • +
  • Added vala
  • +
  • Added gstreamer (which doesn't really work anyway..)
  • +
  • Added webkit
  • +
  • Added midori (replacing seamonkey)
  • +
  • Added libvpx
  • +
  • Added tunctl
  • +
  • Added bind (replacing maradns)
  • +
  • Added celt
  • +
  • Added links back now that it appears to be actively maintained once again
  • +
  • Added strace to the toolchain
  • +
  • Added libpki
  • +
  • Added openca-ocspd
  • +
  • Added libotr and pidgin-otr for encrypted chat support
  • +
+ +
Removed Software:
+
    +
  • Removed seamonkey
  • +
  • Removed maradns (does not support dnssec, so it was replaced with bind)
  • +
  • Removed ps3-utils
  • +
  • Removed tcl/tk
  • +
  • Removed pidgin-encryption in favor of pidgin-otr
  • +
+ +
Network Changes:
+
    +
  • Removed support for /etc/network/proc_settings
  • +
  • Added network device setting file auto-generation and auto-degeneration support
  • +
  • Prevent already started or stopped network devices from being re-started or re-stopped
  • +
  • Add extension support to dns resolver
  • +
  • Add non-standard port support for ipv4 dns resolver
  • +
+ +
Other Changes:
+
    +
  • Shortened udev settle time to 4 seconds
  • +
  • Added support for /etc/sysctl.conf (this also replaces /etc/network/proc_settings)
  • +
  • Desktop build now adds fewer xorg video drivers
  • +
  • Now supports custom xorg.conf.d directories at /etc/X11/ (This helps enable KMS)
  • +
+
+
+
+
+ + diff --git a/distributions/turtle/documentation.html b/distributions/turtle/documentation.html new file mode 100644 index 0000000..9f78343 --- /dev/null +++ b/distributions/turtle/documentation.html @@ -0,0 +1,148 @@ + + + + Documentation - Turtle Kevux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + diff --git a/distributions/turtle/documentation/additional.html b/distributions/turtle/documentation/additional.html new file mode 100644 index 0000000..b441bc1 --- /dev/null +++ b/distributions/turtle/documentation/additional.html @@ -0,0 +1,738 @@ + + + + Documentation - Turtle Kevux - Additional / Miscellaneous Notes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Additional / Miscellaneous Notes

+
+ +
+
+
+

Space Considerations

+
+

+ Note: Small Total Represents the amount of space taken with only 1 set of kernel modules and without the documentation, toolchain and checksums.
+ + + + + +
+ + + + +
Everything Build
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Root DirectorySize (MB)
bin244
boot20
checksum84
documentation311
etc4.7
firmware40
home8
lib578
modules59
sbin50
share371
toolchain221
Total1986.46875
(1.93991 GB)
Small Total1371.69531
(1.33954)
Squashed Total588.82812
Squashed Small Total485.13281
+
+ + + + +
Key Space Consumers for "lib"
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DirectorySize (MB)
Image Magick3.5
X11 (xorg)46
abiword-2.82.2
avifile-0.71.1
claws-mail1.3
gegl-0.0 (gimp)1.7
gimp6.3
git-core6.2
gtk-2.01.3
libgphoto22.1
mysql9.7
perl556
php15
postgresql4.3
purple-2 (pidgin)4.2
python2.666
sane6.1
seamonkey-2.038
sox1.1
tcl8.518
tk8.59.6
transcode2.3
wireshark3.3
xfce43.2
xine4.9
xtables1.0
+
+ + + + +
Desktop Build
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Root DirectorySize (MB)
bin85
boot21
checksum28
documentation66
etc3.7
firmware41
home0.90234
lib236
sbin17
share167
toolchain296
modules54
Total1011.93359
(0.98821 GB)
Small Total623.23437
(0.60862 GB)
Squashed Total282.63281
Squashed Small Total203.26953
+
+ + + + +
Key Space Consumers for "share"
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DirectorySize (MB)
abiword-2.88.3
alsa5.2
aspell5.0
dvb3.6
fonts19
freedroidrpg178
gimp6.2
git-gui1.1
icons31
kbd2.8
lbreakout24.4
link-grammar1.4
mime3.0
misc1.8
multitalk2.0
nmap5.8
orage4.0
poppler13
postgresql2.9
pygobject1.2
pygtk1.3
sane1.6
sounds1.8
themes (xfce)6
vim17
wireshark12
wv1.9
xfce42.6
xine2.0
qemu4.0
+
+
+

+ +
+ +
+
+

SSH Handshaking

+
+

+ This will assume that you are on the client machine and need to connect to a server and have working ssh access to the server. +

+
    +
    +
  • Step 1, generate the key (-d is for DSA, no -d is for RSA)
    +   ssh-keygen -d
  • +
    +
  • Step 2, Skipping password, just press enter on password prompt to leave it empty so that passwordless handshaking can work.
    + This should create the .ssh/id_dsa and the .ssh/id_dsa.pub files, and this may take some time, depending on your hardware.
  • +
    +
  • Step 3, Put the necessary files on the remote server to do the handshaking with
    +   username = your username to connect to the server
    +   remotehost = the address used to connect to the server
    +   /yourhome/directiry = the path to your home directory
    +
    +   scp .ssh/id_dsa.pub username@remotehost:/yourhome/directory/
    +   ssh username@remotehost
    +   mkdir -p ~/.ssh/
    +   cat ~/id_dsa.pub >> ~/.ssh/authorized_keys
  • +
    +
  • Step 4, now you can delete the id_dsa.pub file from the remote host and exit.
    +   rm id_dsa.pub
    +   exit
  • +
    +
  • Step 5, DONE
    + You should be able to ssh to the remote host without a password now, given that the .ssh/id_dsa file and the .ssh/id_dsa.pub file exist on your client machine for the user you intend to connect with.
  • +
    +
  • Adding SSHFS on top of the SSH Handshaking
    + See the SSH Handshaking above first
    + Now that you can handshake from the above example, you should now be able to run the sshfs command and even put it in a logon or boot script, without exposing your password
  • +
    +
  • Mounting from sshfs
    +   sshfs username@remotehost:/remote/directory/ /local/directory/
  • +
    +
  • Unmounting from sshfs
    +   fusermount -u /local/directory/
  • +
    +
  • If you did not use the SSH Handshaking above, then you will be prompted for a password on the sshfs command
  • +
  • If you did use the SSH Handshaking above, and are still being asked for a password, then there is a problem with the RSA/DSA keys
  • +
  • This password will still be prompted for any other client you use that does NOT have the private .ssh/id_dsa key
  • +
+
+ +
+ +
+
+

Encrypted Booting

+
+

+ The encrypted boot process potentially requires additional files to exist on the boot device.
+ This explains what those files are and how to configure these files.
+
+ Inside of the effective /boot/ directory of the boot device there needs to be a /settings/ directory.
+ Inside this directory there are currently only a few types of files searched for:
+

    +
  1. Files that end in: .device
  2. +
  3. Files that end in: .key
  4. +
  5. Files that end in: .ask
  6. +
+ At this time only a limited set of device files are supported and they are:
+
    +
  • rootfs.device
  • +
  • home.device
  • +
  • etc.device
  • +
  • var.device
  • +
  • tmp.device
  • +
+ The only thing allowed inside of these files are the name of device to be decrypted.
+ Allowed names are anything allowed by the mount command, such as:
+
    +
  • /dev/sda1
  • +
  • my_encrypted_drive
  • +
  • 98ff3608-7631-4381-a04a-27cc09f42ae1
  • +
+ There should be nothing else inside of these files.
+
+ The .key and .ask files are optional and must have the same name as the particular device file they represent.
+ For example, for rootfs.device an ask file would be: rootfs.ask.
+
+ The .key and .ask files determine how a particular device is decrypted.
+ If a .ask file exists for a particular device, then during the boot process a prompt for the password will be presented to the user.
+ If a .key file exists then that file is expected to contain the key that will be used to decrypt the drive.
+ This key will allow for automatic decryption during boot.
+ If both a .key file and a .ask file exist, then the .key will be processed first.
+ If that .key file fails to decrypt the drive, then the user will be asked to enter in the password to decrypt.
+
+ Important boot commands to pay attention to when dealing with encrypted booting are:
+
    +
  • settings=
  • +
  • settingsname=
  • +
  • settingscdromsearch=
  • +
  • settingsmmcsearch=
  • +
  • etcdevice=
  • +
  • homedevice=
  • +
  • vardevice=
  • +
  • tmpdevice=
  • +
  • finalroot=
  • +
+
+ The only device encryption supported at this time is LUKS.
+

+
+ +
+ +
+
+

Encrypting a Drive

+
+

+ WARNING: Creating an encrypted drive requires formatting a device, which will delete all data on that device.
+
+ Lets say you wanted to encrypt a partition (/dev/sda6) and use a key file.
+

    +
  1. Fill the drive with random data (this will delete all data on the device /dev/sda6):
    + dd if=/dev/urandom of=/dev/sda6
    +
    +
  2. +
  3. Create a keyfile using randomly generated data:
    + dd if=/dev/urandom of=~/some.key bs=1c count=512
    +
    +
  4. +
  5. Use the keyfile to encrypt the device with LUKS encryption:
    + cryptsetup -c aes-xts-plain:sha512 -s 512 luksFormat /dev/sda6 ~/some.key
    +
    + Alternatively, try this encryption:
    + cryptsetup -c aes-cbc-essiv:sha256 -s 256 luksFormat /dev/sda6 ~/some.key
    +
    +
  6. +
  7. Now that the device is encrypted, decrypt the device so that the device can be properly formatted (calling the decrypted device: some_name_here):
    + cryptsetup luksOpen /dev/sda6 some_name_here -d ~/some-key
    +
    +
  8. +
  9. Format the decypted device (this example format creates an ext4 filesystem with a label of: some_fs_label):
    + mkfs.ext4 -L some_fs_label /dev/mapper/some_name_here
    +
    +
  10. +
+
+ Lets say you wanted to encrypt a partition (/dev/sda6) and use a password.
+
    +
  1. Fill the drive with random data (this will delete all data on the device /dev/sda6):
    + dd if=/dev/urandom of=/dev/sda6
    +
    +
  2. +
  3. Encrypt the device with LUKS encryption:
    + cryptsetup -c aes-xts-plain:sha512 -y -s 512 luksFormat /dev/sda6
    + Then enter in your desired password when prompted.
    +
    + Alternatively, try this encryption:
    + cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/sda6
    +
    +
  4. +
  5. Now that the device is encrypted, decrypt the device so that the device can be properly formatted (calling the decrypted device: some_name_here):
    + cryptsetup luksOpen /dev/sda6 some_name_here
    + Enter in the password you used in the previous step when prompted.
    +
    +
  6. +
  7. Format the decypted device (this example format creates an ext4 filesystem with a label of: some_fs_label):
    + mkfs.ext4 -L some_fs_label /dev/mapper/some_name_here
    +
    +
  8. +
+
+ Lets say you wanted add a new key to an existing encrypted device.
+
    +
  1. If not already created, create a new key using random data:
    + dd if=/dev/urandom of=~/new.key bs=1c count=512
    +
    +
  2. +
  3. Add the new key (Assuming that the old key is called old.key and is stored in your home directory):
    + cryptsetup -d ~/old.key luksAddKey /dev/sda6 ~/new.key
    +
    + If the encrypted device did not use a key, then use the following command instead and enter in the appropriate password when prompted:
    + cryptsetup luksAddKey /dev/sda6 ~/new.key
    +
    +
  4. +
+
+ Lets say you wanted add a new password to an existing encrypted device.
+
    +
  1. Add the new key (Assuming that the old key is called old.key and is stored in your home directory):
    + cryptsetup -d ~/old.key luksAddKey /dev/sda6
    + Then enter in your desired password when prompted.
    +
    + If the encrypted device did not use a key, then use the following command instead:
    + cryptsetup luksAddKey /dev/sda6
    + You will first be prompted for the decryption password, enter in that first.
    + Enter in the new password after the first password properly decrypts the device.
    +
    +
  2. +
+ Lets say you wanted delete an existing password or key file from the drive.
+
    +
  1. Both the password and the key file are stored in slots.
    + In order to delete either of these, you will need to know which slot to delete.
    + This information can be found by decrypting a device with the key or password you wish to delete.
    + Whenever the device gets decrypted a message should be presented, stating which key slot was used.
    +
    + Once you have the propery slot identified (lets call this desired_slot), delete that slot (Assuming that the old key is called old.key and is stored in your home directory): + cryptsetup -d ~/old.key luksDelKey /dev/sda6 desired_slot
    +
    + If the encrypted device did not use a key, then use the following command instead:
    + cryptsetup luksDelKey /dev/sda6 desired_slot
    + Enter in the decryption password when prompted.
    +
    +
  2. +
+ To learn how to encrypt using LUKS in detail, visit the LUKS website.
+

+
+
+
+
+
+ + diff --git a/distributions/turtle/documentation/configuring.html b/distributions/turtle/documentation/configuring.html new file mode 100644 index 0000000..48cf266 --- /dev/null +++ b/distributions/turtle/documentation/configuring.html @@ -0,0 +1,515 @@ + + + + Documentation - Turtle Kevux - System Configuration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

System Configuration

+
+ +
+
+
+

First Time Running Configuration

+
+

+ The very first time the system is run, there are some important things to do.
+ Most important of all is changing the root password and adding users.
+ If you do not change your root password immediately, your system is vulnerable to hacks.
+ If you do not add users, then your users will not be able to use your system unless they run as the root user.
+ WARNING: Running as the root user is dangerous, do so at your own lethal risk.
+
+ Changing the root user password is simple:
+   - Login to your root user (by default this is turtle).
+   - In a command-line prompt (or a terminal), run the command passwd.
+     - NOTE: the command passwd must not contain the "or", passwd is exactly as the command should be spelled.
+   - Follow the instructions and your done.
+

+
+ +
+ +
+
+

Setting Up Usernames and Passwords

+
+

+ To add a user to the system, use the command line program called adduser, which requires root user access.
+ NOTE: In previous versions the gadduser program was supplied as a graphical user interface to adding users, but this has been removed for the time being. +

+ Screenshot of adding users step 1.
+

+ To add a user, open up a terminal and switch to root access.
+ Simply specify the username followed by the permissions group they should belong to.
+ There are 3 major permissions groups: admin, power, and desktop.
+ The admin user has the most priviledges on the system and can gain root access, there is little this user cannot do.
+ The power user is a slightly weakened version of admin and the power user cannot gain root access.
+ The desktop user has the standard permissions needed for standard desktop usage and has no heightened priviledges beyond that.
+

+ Screenshot of adding users step 2.
+

+ After you begin the add user process you will be prompted for a password.
+ Following this, if everything went well the user will have been added to the system.
+ If you ever need to remove a user, the deluser program can be used and functions in an almost identical fassion.
+
+ + NOTE: By default the deluser program will remove all files own by the deleted user, to prevent this from happing use the unsetup script called none.
+ For example, normally to delete the user BOB the command would be 'deluser BOB'.
+ To delete BOB without removing BOB's files, the command would be: 'deluser BOB none'.
+
+

+
+ +
+ +
+
+

Setting Up the Network

+
+ Screenshot of setting up network.
+

+ Configuration Path: /etc/network/
+
+ The Files: +

    +
  1. default-blacklist
  2. +
  3. default-firewall
  4. +
  5. default-device
  6. +
  7. example-device
  8. +
  9. example-device-firewall
  10. +
  11. example-device-wpa
  12. +
  13. example-wireless
  14. +
  15. example-bridge
  16. +
  17. hostname
  18. +
  19. hosts
  20. +
  21. proc_settings
  22. +
  23. resolution
  24. +
  25. protocols
  26. +
  27. services
  28. +
  29. gre0, tunl0
  30. +
+
+
    +
  • File 1, default-blacklist:
    + This is a list of all ip-addresses that the firewall deny access to this machine.
    + A single white space (space, tab, or new line) is all that is needed to setup the addresses.
    + A default whitelist can be created and used as well.
    +
    +
  • +
  • File 2, default-firewall:
    + Defines all of the firewall rules.
    + The firewall syntax is broken up into terms: direction, device, action, rule, ip_list.
    + All of the terms reflect iptables syntax.
    + Terms must all be lowercase.
    + When one of the terms direction, device, and action are set, their data is applied to all rules below that line until another term of the same type is set.
    + What this means is that if a direction of "input" is specified, every rule (or ip_list) following that direction command will apply the direction of "input" until the next direction command is specified.
    + This file is broken up into two different sections: first and last.
    + For each ethernet device on the system there may exist a single firewall rule for that device, such as: net0123456789ab-firewall.
    + The firewall wall rules are applied in this order: default-firewall's section called first, then all ethernet device firewall sections called main, and finally default-firewall's section called last
    +
    + Terminology breakdown:
    +
    + direction: +
      +
    • Valid directions are: input, output, forward, postrouting, prerouting
    • +
    • Direction specifies the direction in which the connection is coming from
    • +
    • The direction stays in effect until another direction is specified
    • +
    +
    + device: +
      +
    • Valid devices are: all, this, and the name of any device
    • +
    • all is generally used within the default-firewall and applies to all network devices on the system
    • +
    • this can only be used in a device-specific firewall file and refers to the name of the device that the specified file belongs to (for the file net0123456789ab-firewall, 'this' would refer to the device called net0123456789ab)
    • +
    • instead of 'all' or 'this', one can explicitly use the name of a device
    • +
    • The device stays in effect until another device is specified
    • +
    +
    + action: +
      +
    • Valid actions are: append, insert, and policy
    • +
    • Action specifies how a particular rule gets added to the firewall, see the iptables documentation on the details.
    • +
    • The action stays in effect until another action is specified
    • +
    +
    + rule: +
      +
    • Rules are the raw iptable commands, minus the direction, device, and action
    • +
    • The rule is applied immediately and does not carry over to any line beyond its own.
    • +
    +
    + ip_list: +
      +
    • IP Lists are the rules applied to multiple ip addresses
    • +
    • The ip_list is applied immediately and does not carry over to any line beyond its own.
    • +
    +
    + Example comparison between raw iptables command and the default-firewall syntax:
    + Raw Iptables Syntax:
    + + /sbin/iptables -A INPUT -i eth0 -p tcp --dport 47288 -j ACCEPT
    + /sbin/iptables -A INPUT -i eth0 -p udp --sport 47288:47544 -j ACCEPT
    + /sbin/iptables -A INPUT -i eth0 -p udp --dport 47288:47544 -j ACCEPT
    + /sbin/iptables -A OUTPUT -o eth0 -p udp --sport 123 --dport 123 -j ACCEPT
    +

    + default-firewall Syntax:
    + + direction input
    + device eth0
    + action append
    +
    + rule -p tcp --dport 47288 -j ACCEPT
    + rule -p udp --sport 47288:47544 -j ACCEPT
    + rule -p udp --dport 47288:47544 -j ACCEPT
    +
    + direction output
    + rule -p udp --sport 123 --dport 123 -j ACCEPT
    +
    +
    +
  • +
  • File 3, default-device:
    + This supplies some default options for all devices.
    + The term 'default' can be used to specify whether or not to attempt to obtain a dynamic address (DHCP) on all standard network devices if settings file for that device does not exist.
    + The terms 'search', 'nameserver_1', 'nameserver_2', and 'nameserver_3' are used to enforce a search domain or nameserver.
    + The enforced search domain and nameservers will override any device specific search domain or nameserver.
    +
    +
  • +
  • File 4, example-device:
    + This file is provided as an example on how to configure a particular network device.
    + The actual device filename should be the name of the device.
    + The core terms: type, signal, and master.
    + The term 'type' has the following options: ignore, disable, static, and dynamic.
    + The term type 'ignore' means that the networking tools will not touch that network device so that a user can manually configure without having the network tools change anything.
    + The term type 'disable' means that under all circumstance that device should be disabled, if at any time the device is noticed as up it will be brought down.
    + The term type 'static' means that the connection is a static connection (manually defined).
    + The term type 'dynamic' means that the connection is a dynamic connection (DHCP/auto defined).
    + The term 'signal' specifies whether or not the signal is 'wired' or 'wireless'.
    + The term 'master' specifies whether or not this device is the master route, 'yes' or 'no'. If 'yes', then the terms 'search', 'nameserver_1', 'nameserver_2', and 'nameserver_3' will be processed and this device will be setup as the default route.
    + The common terms are: bond tunnel mac search nameserver_1 nameserver_2 nameserver_3 firewall.
    + The term 'bond' implies that this device should be bonded between multiple network devices.
    + To syntax is: bond network_device_1 network_device_2
    + Where the network_device_1 and network_device_2 are the names of the network devices to bond togethor.
    + The term 'tunnel' is a works in progress, this could be removed in the future.
    + The term 'mac' represents the devices mac address and provides the means to change the mac address to something different.
    + In particular, you can specify random instead of a valid mac address to have the mac address be randomly generated every time the device gets enabled.
    + For the terms 'search', 'nameserver_1', 'nameserver_2', 'nameserver_3', see the term 'master' above.
    + The term 'firewall' can be either 'on' or 'off' and represents whether or not the device-specific firewall rules will be processed when the device gets enabled.
    + The device-specific firewall rules are those specified in the file nameofdevice-firewall.
    + The static terms are: ip, network, prefix, broadcast, metric, gateway, gtype, gmetric, and family.
    + The gtype and gmetric represent the gateway type and gateway metric.
    + The wireless terms are: essid, mode, channel, rate, enc, power, nick, nwid, ap, txpower, sens, retry, rts, frag, modulation, and wpa
    + The term 'wpa' can be either 'yes' or 'no' and specifies whether or not the target wireless connection is using wpa.
    + File 7 contains a small example on the using wireless.
    + File 8 contains a small example on the using bridges.
    +
    +
  • +
  • File 5, example-device-firewall:
    + This is an example device-specific firewall rules file, see File 2 above for details.
    +
    +
  • +
  • File 6, example-device-wpa:
    + This is the wpa settings for a specific device, see the wpa_supplicant documentation on the web for how to configure this file (search for wpa_supplicant.conf).
    +
    +
  • +
  • File 7, example-wireless:
    + This is an example wireless device, see File 4 above for details.
    +
    +
  • +
  • File 8, example-bridge:
    + This is an example bridged device, see File 4 above for details.
    +
    +
  • +
  • File 9, hostname:
    + This file contains only the hostname, no extra syntax.
    + This file is the new location and name of the /etc/hostname file
    +
    +
  • +
  • File 10, hosts:
    + This file is the new location and name of the /etc/hosts file
    +
    +
  • +
  • File 11, proc_settings:
    + This file represents proc-specific network settings and get applied at system start.
    + To reprocess this file, run the command ngc -r net/network_proc.
    +
    +
  • +
  • File 12, resolution:
    + This file is the new location and name of the /etc/resolv.conf file
    + This file should probably not be edited directly, instead edit either the default-device or the appropriate network file and set the search, nameserver_1, nameserver_2, and nameserver_3 appropriately.
    +
    +
  • +
  • File 13, protocols:
    + This file is the new location and name of the /etc/protocols file
    +
    +
  • +
  • File 14, services:
    + This file is the new location and name of the /etc/services file
    +
    +
  • +
  • File 15, gre0, tunl0:
    + The gre0 and tunl0 are disabled by default and these files are doing the disabling.
    +
    +
  • +
  • Controlling the Network:
    + To control the firewall you will need to use the console command: firewall.
    + To control network devices you will need to use the console command: network.
    +
    +
  • +
+

+
+ +
+ +
+
+

Setting Up the Xorg Display

+
+ Screenshot of configuring Xorg Display step 1.
+

+ Configuration Path: /etc/X11/
+
+ The file to be configured is: /etc/X11/xorg.conf
+ The file /etc/X11/xorg.conf has examples and slight documentaton on how to configure the xorg display.
+ You can also visit http://www.x.org/ for details.
+ Alternatively visit http://die.net/ and search for xorg.conf.
+
+

+ Screenshot of  configuring Xorg Display step 2.
+

+ If you need to use a different video driver, edit the /etc/X11/xorg.conf file.
+ Scroll to the bottom and uncomment and set the Driver to whatever you need it to be.
+
+ If you are on an OLPC, you could copy the pre-created olpc xorg configuration file:
+ +    cd /etc/X11/
+    cp -v xorg.conf.olpc xorg.conf
+
+
+

+
+ +
+ +
+
+

Updating the ClamAV Database

+
+ Screenshot of updating ClamAV.
+

+ Configuration Path: /home/services/clamav/database/
+
+ You will need to open a terminal and switch to the clamav user.
+ Now execute the freshclam program.
+ NOTE: This requires network access, so this will fail if you have no working network active.
+

+
+ +
+ +
+
+

Tweaking the Boot Process

+
+ Screenshot of tweaking boot process.
+

+ Configuration Path: /etc/initng/
+
+ The file to be configured is: /etc/initng/runlevel/default.runlevel
+ The default.runlevel file specifies how the system boots, but not the order.
+ The order is handled by the individual dependencies.
+
+ Most of the available boot-time software have rules already created such that all you need to do is add them to the default runlevel.
+ To add/remove anything to the boot process, the syntax of the file requires the directory and then the filename (without the extension) on a line by itself.
+
+ If you wanted to add an SSH server to your boot process, then you would simple add target/ssh on any new line in the file.
+ The directory target/ can be found in the /etc/initng/ directory.
+
+ If you wish to boot using a runlevel other than default, look into the runlevel= boot option.
+
+ Once settings are changed, you can use the ngc program to start/stop and do other initng administrative commands.
+

+
+ +
+ +
+
+

PCI and USB ID Updating

+
+ Screenshot of updating IDs.
+

+ Configuration Path: /etc/
+
+ The files to be configured are: /etc/pci.ids and /etc/usb.ids
+ The /etc/pci.ids and /etc/usb.ids files specify vender-specific information on what any particular hardware device is.
+ In particular, the lspci and lsusb utilities read this information.
+
+ To update /etc/pci.ids to the latest version, download: http://pciids.sourceforge.net/v2.2/pci.ids
+ To update /etc/usb.ids to the latest version, download: http://www.linux-usb.org/usb.ids
+
+ Once this is done, make sure that the file permissions are correct:
+ +    chgrp hardware_browse /etc/{pci,usb}.ids
+    chmod g-wx+r,o-rwx /etc/{pci,usb}.ids
+
+

+
+ +
+ +
+
+

Using Turtle Kevux on the OLPC

+
+

+ The first step is to follow the instructions on the OLPC website to obtain the developer key.
+ This may take a while, so come back a few hours later.
+
+ There are two possible ways to boot kevux without touching the original OLPC system.
+ The first is to install Turtle Kevux onto a USB-Stick, whose partition should be labelled turtle-usb-olpc
+ The second is to install Turtle Kevux onto a MMC, whose partition should be labelled turtle-sd-olpc
+ If you do not know how to label or format the USB-Stick or MMC: +

    +
  1. Read the partitioning tutorial
  2. +
  3. Make sure to properly select the correct USB-Stick or MMC.
  4. +
  5. Create a single partition and set the label to either turtle-usb-olpc or turtle-sd-olpc for USB-Stick and MMC respectively.
  6. +
+
+ The next step is to obtain the custom compiled OLPC kernels from the kevux website.
+ Once you have the custom OLPC kernel and its appropriate kernel modules, put them on the system.
+ Lets say you downloaded the custom compiled OLPC kernel from kevux.org and it is called turtle-2.6.26.5-olpc and the maintenance kernel is called turtle-2.6.26.5-olpc-maintenance.
+ Lets say that you also dowloaded the appropriate kernel modules and it is called 2.6.26.5-olpc.tz2.
+ You will also need to extract the kernel modules to modules/
+ What you would do is:
+ +    mv -v turtle-2.6.26.5-olpc boot/
+    ln -vs turtle-2.6.26.5-olpc boot/turtle-olpc
+    tar -xf 2.6.26.5-olpc.tz2 -C modules/
+    mv -v turtle-2.6.26.5-olpc-maintenance boot/
+    ln -vs turtle-2.6.26.5-olpc-maintenance boot/turtle-olpc-maintenance
+
+
+ Replace the default xorg.conf file with the the xorg.conf.olpc file so that you can get a working graphical display:
+ +    cp -v etc/X11/xorg.conf.olpc etc/X11/xorg.conf
+
+
+ You are now ready to boot to the OLPC.
+ Plug your device into the OLPC and reboot the OLPC.
+ If all goes well, you should get a prompt where you can press a key to select the desired method of booting.
+ NOTE: Don't select the Squash or Squish boot methods unless you know what you are doing.
+
+ If all went well, you are sitting in a graphical environment.
+ You now have one more step at tweaking the system.
+

+ Screenshot of setting up OLPC step 1.
+

+ Open up the Applications->Settings->Appearance.
+

+ Screenshot of setting up OLPC step 2.
+

+ Select the Fonts tab.
+

+ Screenshot of setting up OLPC step 3.
+

+ Enable the Custom DPI Settings checkbox and set DPI to 140.
+
+ You should now be able to fully use OLPC.
+ NOTE: Use the TVCard Player called xawtv to access the camera.
+

+
+
+
+
+
+ + diff --git a/distributions/turtle/documentation/credits.html b/distributions/turtle/documentation/credits.html new file mode 100644 index 0000000..da50e6d --- /dev/null +++ b/distributions/turtle/documentation/credits.html @@ -0,0 +1,142 @@ + + + + Documentation - Turtle Kevux - Credits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Credits

+
+ +
+
Linux Kernel Developers
+
+ www.kernel.org
+ Without the Linux kernel, none of this would be possible.
+
+
+
All the other Open-Source Developers
+
+ This system is comprised of a bunch of software released as open-source by numerous people.
+
+
+
Linux From Scratch
+
+ www.linuxfromscratch.org
+ I had to start from somewhere, this is where I learned.
+ This includes the HLFS (Hardeneded LFS) project at www.linuxfromscratch.org/hlfs
+
+
+
uClibc Developers
+
+ www.uclibc.org
+ They wrote a more efficient libc as opposed to glibc.
+
+
+
Richard Crichton
+
+ An early tester and user of my system as it evolved into Turtle Kevux.
+
+
+
Declan Moriarty
+
+ A tester who provided valuable feedback, particularly when building from a glibc host, and as regards to user friendliness.
+
+
+
Anonymous
+
+ Thanks, Anonymous.
+
+
+
+
+
+ + diff --git a/distributions/turtle/documentation/css/documentation.css b/distributions/turtle/documentation/css/documentation.css new file mode 100644 index 0000000..db0b124 --- /dev/null +++ b/distributions/turtle/documentation/css/documentation.css @@ -0,0 +1,74 @@ +.kevux > .content-block > .main-block > .main > .main-content ul, +.kevux > .content-block > .main-block > .main > .main-content ol { + margin: 0px; + padding-top: 1px; + padding-left: 26px; + padding-bottom: 5px; +} + +.kevux > .content-block > .main-block > .main > .main-content a { + color: #0009ff; + + text-decoration: none; +} + +.kevux > .content-block > .main-block > .main > .main-content .notice { + color: #1a5d03; +} + +.kevux > .content-block > .main-block > .main > .main-content .important { + color: #707070; +} + +.kevux > .content-block > .main-block > .main > .main-content .error { + color: #ee0000; +} + +.kevux > .content-block > .main-block > .main > .main-content .center { + margin-left: auto; + margin-right: auto; +} + +.kevux > .content-block > .main-block > .main > .main-content .block { + display: block; +} + +.kevux > .content-block > .main-block > .main > .main-content .inline_block { + display: inline-block; +} + +.kevux > .content-block > .main-block > .main > .main-content .inline { + display: inline; +} + +.kevux > .content-block > .main-block > .main > .main-content .bold { + font-weight: bold; +} + +.kevux > .content-block > .main-block > .main > .main-content .vertical_align-top { + vertical-align: top; +} + +.kevux > .content-block > .main-block > .main > .main-content hr.margined { + margin-top: 12px; + margin-bottom: 12px; +} + +.kevux > .content-block > .main-block > .main > .main-content p { + margin: 0; +} + +.kevux > .content-block > .main-block > .main > .main-content .code { + background-color: #ffffff; + border: 1px dotted #000000; + padding: 0.5px 3px; +} + +.kevux > .content-block > .main-block > .main > .main-content .code.inline-block, +.kevux > .content-block > .main-block > .main > .main-content .code.block { + padding: 3px 6px; +} + +.kevux > .content-block > .main-block > .main > .main-content .tab_over { + margin-left: 24px; +} diff --git a/distributions/turtle/documentation/images/Adding_Users-1.png b/distributions/turtle/documentation/images/Adding_Users-1.png new file mode 100644 index 0000000..d461717 Binary files /dev/null and b/distributions/turtle/documentation/images/Adding_Users-1.png differ diff --git a/distributions/turtle/documentation/images/Adding_Users-2.png b/distributions/turtle/documentation/images/Adding_Users-2.png new file mode 100644 index 0000000..c3d86e1 Binary files /dev/null and b/distributions/turtle/documentation/images/Adding_Users-2.png differ diff --git a/distributions/turtle/documentation/images/Command_Line_Edit_Xorg.png b/distributions/turtle/documentation/images/Command_Line_Edit_Xorg.png new file mode 100644 index 0000000..eeef4f9 Binary files /dev/null and b/distributions/turtle/documentation/images/Command_Line_Edit_Xorg.png differ diff --git a/distributions/turtle/documentation/images/Configuring_Camsource_Server.png b/distributions/turtle/documentation/images/Configuring_Camsource_Server.png new file mode 100644 index 0000000..37a2217 Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_Camsource_Server.png differ diff --git a/distributions/turtle/documentation/images/Configuring_Lighttpd_Server.png b/distributions/turtle/documentation/images/Configuring_Lighttpd_Server.png new file mode 100644 index 0000000..c428ef9 Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_Lighttpd_Server.png differ diff --git a/distributions/turtle/documentation/images/Configuring_MPD_Server.png b/distributions/turtle/documentation/images/Configuring_MPD_Server.png new file mode 100644 index 0000000..4521d4e Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_MPD_Server.png differ diff --git a/distributions/turtle/documentation/images/Configuring_Maradns_Server.png b/distributions/turtle/documentation/images/Configuring_Maradns_Server.png new file mode 100644 index 0000000..32e9b90 Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_Maradns_Server.png differ diff --git a/distributions/turtle/documentation/images/Configuring_NTP_Server-1.png b/distributions/turtle/documentation/images/Configuring_NTP_Server-1.png new file mode 100644 index 0000000..2f02e8e Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_NTP_Server-1.png differ diff --git a/distributions/turtle/documentation/images/Configuring_Postgres_Server-1.png b/distributions/turtle/documentation/images/Configuring_Postgres_Server-1.png new file mode 100644 index 0000000..61794a4 Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_Postgres_Server-1.png differ diff --git a/distributions/turtle/documentation/images/Configuring_Postgres_Server-2.png b/distributions/turtle/documentation/images/Configuring_Postgres_Server-2.png new file mode 100644 index 0000000..43fb9f5 Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_Postgres_Server-2.png differ diff --git a/distributions/turtle/documentation/images/Configuring_Rsync_Server.png b/distributions/turtle/documentation/images/Configuring_Rsync_Server.png new file mode 100644 index 0000000..a5d42b6 Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_Rsync_Server.png differ diff --git a/distributions/turtle/documentation/images/Configuring_SSH_Server-1.png b/distributions/turtle/documentation/images/Configuring_SSH_Server-1.png new file mode 100644 index 0000000..65fd3c7 Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_SSH_Server-1.png differ diff --git a/distributions/turtle/documentation/images/Configuring_Samba_Server.png b/distributions/turtle/documentation/images/Configuring_Samba_Server.png new file mode 100644 index 0000000..95cb2cd Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_Samba_Server.png differ diff --git a/distributions/turtle/documentation/images/Configuring_Subversion_Server-1.png b/distributions/turtle/documentation/images/Configuring_Subversion_Server-1.png new file mode 100644 index 0000000..c53706d Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_Subversion_Server-1.png differ diff --git a/distributions/turtle/documentation/images/Configuring_Subversion_Server-2.png b/distributions/turtle/documentation/images/Configuring_Subversion_Server-2.png new file mode 100644 index 0000000..7dc7df1 Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_Subversion_Server-2.png differ diff --git a/distributions/turtle/documentation/images/Configuring_ToBoot-1.png b/distributions/turtle/documentation/images/Configuring_ToBoot-1.png new file mode 100644 index 0000000..d50e867 Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_ToBoot-1.png differ diff --git a/distributions/turtle/documentation/images/Configuring_ToBoot-2.png b/distributions/turtle/documentation/images/Configuring_ToBoot-2.png new file mode 100644 index 0000000..d70e9e6 Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_ToBoot-2.png differ diff --git a/distributions/turtle/documentation/images/Configuring_ToBoot-3.png b/distributions/turtle/documentation/images/Configuring_ToBoot-3.png new file mode 100644 index 0000000..b0bc5b0 Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_ToBoot-3.png differ diff --git a/distributions/turtle/documentation/images/Configuring_ToBoot-4.png b/distributions/turtle/documentation/images/Configuring_ToBoot-4.png new file mode 100644 index 0000000..4c24eb7 Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_ToBoot-4.png differ diff --git a/distributions/turtle/documentation/images/Configuring_Xorg_Display-1.png b/distributions/turtle/documentation/images/Configuring_Xorg_Display-1.png new file mode 100644 index 0000000..0d0b38a Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_Xorg_Display-1.png differ diff --git a/distributions/turtle/documentation/images/Configuring_Xorg_Display-2.png b/distributions/turtle/documentation/images/Configuring_Xorg_Display-2.png new file mode 100644 index 0000000..98656af Binary files /dev/null and b/distributions/turtle/documentation/images/Configuring_Xorg_Display-2.png differ diff --git a/distributions/turtle/documentation/images/Desktop.png b/distributions/turtle/documentation/images/Desktop.png new file mode 100644 index 0000000..a692a6f Binary files /dev/null and b/distributions/turtle/documentation/images/Desktop.png differ diff --git a/distributions/turtle/documentation/images/Extracting_System-1.png b/distributions/turtle/documentation/images/Extracting_System-1.png new file mode 100644 index 0000000..1a40908 Binary files /dev/null and b/distributions/turtle/documentation/images/Extracting_System-1.png differ diff --git a/distributions/turtle/documentation/images/Extracting_System-2.png b/distributions/turtle/documentation/images/Extracting_System-2.png new file mode 100644 index 0000000..13e1177 Binary files /dev/null and b/distributions/turtle/documentation/images/Extracting_System-2.png differ diff --git a/distributions/turtle/documentation/images/HowTo_Partition-1.png b/distributions/turtle/documentation/images/HowTo_Partition-1.png new file mode 100644 index 0000000..74a7927 Binary files /dev/null and b/distributions/turtle/documentation/images/HowTo_Partition-1.png differ diff --git a/distributions/turtle/documentation/images/HowTo_Partition-2.png b/distributions/turtle/documentation/images/HowTo_Partition-2.png new file mode 100644 index 0000000..06dc39c Binary files /dev/null and b/distributions/turtle/documentation/images/HowTo_Partition-2.png differ diff --git a/distributions/turtle/documentation/images/HowTo_Partition-3.png b/distributions/turtle/documentation/images/HowTo_Partition-3.png new file mode 100644 index 0000000..c30b199 Binary files /dev/null and b/distributions/turtle/documentation/images/HowTo_Partition-3.png differ diff --git a/distributions/turtle/documentation/images/HowTo_Partition-4.png b/distributions/turtle/documentation/images/HowTo_Partition-4.png new file mode 100644 index 0000000..adaa54e Binary files /dev/null and b/distributions/turtle/documentation/images/HowTo_Partition-4.png differ diff --git a/distributions/turtle/documentation/images/HowTo_Partition-5.png b/distributions/turtle/documentation/images/HowTo_Partition-5.png new file mode 100644 index 0000000..b118383 Binary files /dev/null and b/distributions/turtle/documentation/images/HowTo_Partition-5.png differ diff --git a/distributions/turtle/documentation/images/Logging_On-1.png b/distributions/turtle/documentation/images/Logging_On-1.png new file mode 100644 index 0000000..9499064 Binary files /dev/null and b/distributions/turtle/documentation/images/Logging_On-1.png differ diff --git a/distributions/turtle/documentation/images/Logging_On-2.png b/distributions/turtle/documentation/images/Logging_On-2.png new file mode 100644 index 0000000..b111664 Binary files /dev/null and b/distributions/turtle/documentation/images/Logging_On-2.png differ diff --git a/distributions/turtle/documentation/images/Logging_On-3.png b/distributions/turtle/documentation/images/Logging_On-3.png new file mode 100644 index 0000000..6195f88 Binary files /dev/null and b/distributions/turtle/documentation/images/Logging_On-3.png differ diff --git a/distributions/turtle/documentation/images/Mounting_Cdrom.png b/distributions/turtle/documentation/images/Mounting_Cdrom.png new file mode 100644 index 0000000..3560fd2 Binary files /dev/null and b/distributions/turtle/documentation/images/Mounting_Cdrom.png differ diff --git a/distributions/turtle/documentation/images/Mounting_Partition.png b/distributions/turtle/documentation/images/Mounting_Partition.png new file mode 100644 index 0000000..fc1f0a6 Binary files /dev/null and b/distributions/turtle/documentation/images/Mounting_Partition.png differ diff --git a/distributions/turtle/documentation/images/Network.png b/distributions/turtle/documentation/images/Network.png new file mode 100644 index 0000000..6c82c00 Binary files /dev/null and b/distributions/turtle/documentation/images/Network.png differ diff --git a/distributions/turtle/documentation/images/Setting_OLPC_DPI-1.png b/distributions/turtle/documentation/images/Setting_OLPC_DPI-1.png new file mode 100644 index 0000000..0f9896d Binary files /dev/null and b/distributions/turtle/documentation/images/Setting_OLPC_DPI-1.png differ diff --git a/distributions/turtle/documentation/images/Setting_OLPC_DPI-2.png b/distributions/turtle/documentation/images/Setting_OLPC_DPI-2.png new file mode 100644 index 0000000..5be9dbe Binary files /dev/null and b/distributions/turtle/documentation/images/Setting_OLPC_DPI-2.png differ diff --git a/distributions/turtle/documentation/images/Setting_OLPC_DPI-3.png b/distributions/turtle/documentation/images/Setting_OLPC_DPI-3.png new file mode 100644 index 0000000..a934d56 Binary files /dev/null and b/distributions/turtle/documentation/images/Setting_OLPC_DPI-3.png differ diff --git a/distributions/turtle/documentation/images/Startup.png b/distributions/turtle/documentation/images/Startup.png new file mode 100644 index 0000000..919a9a6 Binary files /dev/null and b/distributions/turtle/documentation/images/Startup.png differ diff --git a/distributions/turtle/documentation/images/Startup_Failure.png b/distributions/turtle/documentation/images/Startup_Failure.png new file mode 100644 index 0000000..ed6b158 Binary files /dev/null and b/distributions/turtle/documentation/images/Startup_Failure.png differ diff --git a/distributions/turtle/documentation/images/Tweaking_Boot_Process.png b/distributions/turtle/documentation/images/Tweaking_Boot_Process.png new file mode 100644 index 0000000..d0dd54f Binary files /dev/null and b/distributions/turtle/documentation/images/Tweaking_Boot_Process.png differ diff --git a/distributions/turtle/documentation/images/Updating_Clamav_Database.png b/distributions/turtle/documentation/images/Updating_Clamav_Database.png new file mode 100644 index 0000000..ec1d655 Binary files /dev/null and b/distributions/turtle/documentation/images/Updating_Clamav_Database.png differ diff --git a/distributions/turtle/documentation/images/Updating_Ids_Files.png b/distributions/turtle/documentation/images/Updating_Ids_Files.png new file mode 100644 index 0000000..1f80f8b Binary files /dev/null and b/distributions/turtle/documentation/images/Updating_Ids_Files.png differ diff --git a/distributions/turtle/documentation/images_small/Adding_Users-1.png b/distributions/turtle/documentation/images_small/Adding_Users-1.png new file mode 100644 index 0000000..1d68b0c Binary files /dev/null and b/distributions/turtle/documentation/images_small/Adding_Users-1.png differ diff --git a/distributions/turtle/documentation/images_small/Adding_Users-2.png b/distributions/turtle/documentation/images_small/Adding_Users-2.png new file mode 100644 index 0000000..88accf5 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Adding_Users-2.png differ diff --git a/distributions/turtle/documentation/images_small/Command_Line_Edit_Xorg.png b/distributions/turtle/documentation/images_small/Command_Line_Edit_Xorg.png new file mode 100644 index 0000000..9b34b96 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Command_Line_Edit_Xorg.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_Camsource_Server.png b/distributions/turtle/documentation/images_small/Configuring_Camsource_Server.png new file mode 100644 index 0000000..9e90a98 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_Camsource_Server.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_Lighttpd_Server.png b/distributions/turtle/documentation/images_small/Configuring_Lighttpd_Server.png new file mode 100644 index 0000000..7a11afe Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_Lighttpd_Server.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_MPD_Server.png b/distributions/turtle/documentation/images_small/Configuring_MPD_Server.png new file mode 100644 index 0000000..87922ee Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_MPD_Server.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_Maradns_Server.png b/distributions/turtle/documentation/images_small/Configuring_Maradns_Server.png new file mode 100644 index 0000000..9232dc4 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_Maradns_Server.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_NTP_Server-1.png b/distributions/turtle/documentation/images_small/Configuring_NTP_Server-1.png new file mode 100644 index 0000000..fb4bf6d Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_NTP_Server-1.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_NTP_Server.png b/distributions/turtle/documentation/images_small/Configuring_NTP_Server.png new file mode 100644 index 0000000..1aee918 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_NTP_Server.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_Postgres_Server-1.png b/distributions/turtle/documentation/images_small/Configuring_Postgres_Server-1.png new file mode 100644 index 0000000..ad8799f Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_Postgres_Server-1.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_Postgres_Server-2.png b/distributions/turtle/documentation/images_small/Configuring_Postgres_Server-2.png new file mode 100644 index 0000000..0b025ae Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_Postgres_Server-2.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_Rsync_Server.png b/distributions/turtle/documentation/images_small/Configuring_Rsync_Server.png new file mode 100644 index 0000000..974dab7 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_Rsync_Server.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_SSH_Server-1.png b/distributions/turtle/documentation/images_small/Configuring_SSH_Server-1.png new file mode 100644 index 0000000..ac15495 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_SSH_Server-1.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_Samba_Server.png b/distributions/turtle/documentation/images_small/Configuring_Samba_Server.png new file mode 100644 index 0000000..430aba6 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_Samba_Server.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_Subversion_Server-1.png b/distributions/turtle/documentation/images_small/Configuring_Subversion_Server-1.png new file mode 100644 index 0000000..5b3aaba Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_Subversion_Server-1.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_Subversion_Server-2.png b/distributions/turtle/documentation/images_small/Configuring_Subversion_Server-2.png new file mode 100644 index 0000000..7169621 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_Subversion_Server-2.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_ToBoot-1.png b/distributions/turtle/documentation/images_small/Configuring_ToBoot-1.png new file mode 100644 index 0000000..b2a9177 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_ToBoot-1.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_ToBoot-2.png b/distributions/turtle/documentation/images_small/Configuring_ToBoot-2.png new file mode 100644 index 0000000..24e1a18 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_ToBoot-2.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_ToBoot-3.png b/distributions/turtle/documentation/images_small/Configuring_ToBoot-3.png new file mode 100644 index 0000000..4b9d644 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_ToBoot-3.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_ToBoot-4.png b/distributions/turtle/documentation/images_small/Configuring_ToBoot-4.png new file mode 100644 index 0000000..77b2d45 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_ToBoot-4.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_Xorg_Display-1.png b/distributions/turtle/documentation/images_small/Configuring_Xorg_Display-1.png new file mode 100644 index 0000000..6d4e82b Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_Xorg_Display-1.png differ diff --git a/distributions/turtle/documentation/images_small/Configuring_Xorg_Display-2.png b/distributions/turtle/documentation/images_small/Configuring_Xorg_Display-2.png new file mode 100644 index 0000000..ca8e5db Binary files /dev/null and b/distributions/turtle/documentation/images_small/Configuring_Xorg_Display-2.png differ diff --git a/distributions/turtle/documentation/images_small/Desktop.png b/distributions/turtle/documentation/images_small/Desktop.png new file mode 100644 index 0000000..20622c9 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Desktop.png differ diff --git a/distributions/turtle/documentation/images_small/Extracting_System-1.png b/distributions/turtle/documentation/images_small/Extracting_System-1.png new file mode 100644 index 0000000..df0b221 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Extracting_System-1.png differ diff --git a/distributions/turtle/documentation/images_small/Extracting_System-2.png b/distributions/turtle/documentation/images_small/Extracting_System-2.png new file mode 100644 index 0000000..b092d59 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Extracting_System-2.png differ diff --git a/distributions/turtle/documentation/images_small/HowTo_Partition-1.png b/distributions/turtle/documentation/images_small/HowTo_Partition-1.png new file mode 100644 index 0000000..3879339 Binary files /dev/null and b/distributions/turtle/documentation/images_small/HowTo_Partition-1.png differ diff --git a/distributions/turtle/documentation/images_small/HowTo_Partition-2.png b/distributions/turtle/documentation/images_small/HowTo_Partition-2.png new file mode 100644 index 0000000..fb25be7 Binary files /dev/null and b/distributions/turtle/documentation/images_small/HowTo_Partition-2.png differ diff --git a/distributions/turtle/documentation/images_small/HowTo_Partition-3.png b/distributions/turtle/documentation/images_small/HowTo_Partition-3.png new file mode 100644 index 0000000..cc18182 Binary files /dev/null and b/distributions/turtle/documentation/images_small/HowTo_Partition-3.png differ diff --git a/distributions/turtle/documentation/images_small/HowTo_Partition-4.png b/distributions/turtle/documentation/images_small/HowTo_Partition-4.png new file mode 100644 index 0000000..e58e7b2 Binary files /dev/null and b/distributions/turtle/documentation/images_small/HowTo_Partition-4.png differ diff --git a/distributions/turtle/documentation/images_small/HowTo_Partition-5.png b/distributions/turtle/documentation/images_small/HowTo_Partition-5.png new file mode 100644 index 0000000..1f6c823 Binary files /dev/null and b/distributions/turtle/documentation/images_small/HowTo_Partition-5.png differ diff --git a/distributions/turtle/documentation/images_small/Logging_On-1.png b/distributions/turtle/documentation/images_small/Logging_On-1.png new file mode 100644 index 0000000..56c8d6b Binary files /dev/null and b/distributions/turtle/documentation/images_small/Logging_On-1.png differ diff --git a/distributions/turtle/documentation/images_small/Logging_On-2.png b/distributions/turtle/documentation/images_small/Logging_On-2.png new file mode 100644 index 0000000..693c414 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Logging_On-2.png differ diff --git a/distributions/turtle/documentation/images_small/Logging_On-3.png b/distributions/turtle/documentation/images_small/Logging_On-3.png new file mode 100644 index 0000000..d58ce9f Binary files /dev/null and b/distributions/turtle/documentation/images_small/Logging_On-3.png differ diff --git a/distributions/turtle/documentation/images_small/Mounting_Cdrom.png b/distributions/turtle/documentation/images_small/Mounting_Cdrom.png new file mode 100644 index 0000000..e221f61 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Mounting_Cdrom.png differ diff --git a/distributions/turtle/documentation/images_small/Mounting_Partition.png b/distributions/turtle/documentation/images_small/Mounting_Partition.png new file mode 100644 index 0000000..32972b0 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Mounting_Partition.png differ diff --git a/distributions/turtle/documentation/images_small/Network.png b/distributions/turtle/documentation/images_small/Network.png new file mode 100644 index 0000000..58d3be0 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Network.png differ diff --git a/distributions/turtle/documentation/images_small/Setting_OLPC_DPI-1.png b/distributions/turtle/documentation/images_small/Setting_OLPC_DPI-1.png new file mode 100644 index 0000000..dd401d3 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Setting_OLPC_DPI-1.png differ diff --git a/distributions/turtle/documentation/images_small/Setting_OLPC_DPI-2.png b/distributions/turtle/documentation/images_small/Setting_OLPC_DPI-2.png new file mode 100644 index 0000000..6bf69d4 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Setting_OLPC_DPI-2.png differ diff --git a/distributions/turtle/documentation/images_small/Setting_OLPC_DPI-3.png b/distributions/turtle/documentation/images_small/Setting_OLPC_DPI-3.png new file mode 100644 index 0000000..a31a267 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Setting_OLPC_DPI-3.png differ diff --git a/distributions/turtle/documentation/images_small/Startup.png b/distributions/turtle/documentation/images_small/Startup.png new file mode 100644 index 0000000..9d509a6 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Startup.png differ diff --git a/distributions/turtle/documentation/images_small/Startup_Failure.png b/distributions/turtle/documentation/images_small/Startup_Failure.png new file mode 100644 index 0000000..be0e987 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Startup_Failure.png differ diff --git a/distributions/turtle/documentation/images_small/Tweaking_Boot_Process.png b/distributions/turtle/documentation/images_small/Tweaking_Boot_Process.png new file mode 100644 index 0000000..40effbc Binary files /dev/null and b/distributions/turtle/documentation/images_small/Tweaking_Boot_Process.png differ diff --git a/distributions/turtle/documentation/images_small/Updating_Clamav_Database.png b/distributions/turtle/documentation/images_small/Updating_Clamav_Database.png new file mode 100644 index 0000000..0434281 Binary files /dev/null and b/distributions/turtle/documentation/images_small/Updating_Clamav_Database.png differ diff --git a/distributions/turtle/documentation/images_small/Updating_Ids_Files.png b/distributions/turtle/documentation/images_small/Updating_Ids_Files.png new file mode 100644 index 0000000..4c6c59c Binary files /dev/null and b/distributions/turtle/documentation/images_small/Updating_Ids_Files.png differ diff --git a/distributions/turtle/documentation/installing.html b/distributions/turtle/documentation/installing.html new file mode 100644 index 0000000..0e6f6c9 --- /dev/null +++ b/distributions/turtle/documentation/installing.html @@ -0,0 +1,366 @@ + + + + Documentation - Turtle Kevux - Installing Turtle Kevux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Installing Turtle Kevux

+
+ +
+
+
+

Partitioning the System

+
+ Screenshot of how to partition step 1.
+

+ WARNING: Partitioning a system can be dangerous, do not perform these operations on a system with important information on it.
+ Get practice on a harddrive that you can afford to have it's data lost before doing this on a working system.

+
+ Due to the complexity and risks of partitioning, this tutorial is mostly going to assume you have an entire harddrive to be formatted.
+ The partitioner tool can be found on the effective "Start Menu" under Utilities -> Disk Partitioner.
+ NOTE: For the more experienced users, fdisk and pdisk both exist on the system as well as the mke2fs and similar utilities.
+

+ Screenshot of how to partition step 2.
+

+ The first thing you will have to figure out is which harddrive (if you have more than one) are you using.
+ If you cannot figure out what harddrive to use, then do not continue until you have properly identified your correct harddrive.
+ On the top-right of the partitioner, there is a drop down box that has something like /dev/sda.
+ This drop-down box is used to select the correct harddrive.
+

+ Screenshot of how to partition step 3.
+

+ There are some important names and rules that must be learned at this point.
+ Harddrives can be broken down into pieces that are called partitions.
+ Harddrives can be broken down into at most 4 partitions.
+ To increase the number of available partitions, an extended partition must be created.
+ Extended partitions should be avoided unless you need them and then you usually want to place them as the last partition (sda4, for example).
+
+ Now that you have the partitions taken care of, lets focus on the filesystems.
+ The filesystems are pretty technical and specify how the data is stored and retrieved.
+ What you need to worry about is what Operating System uses which partitions.
+
+ In general, the ntfs filesystem is used by the Microsoft Windows Operating System.
+ Standard usb memory sticks generally use the vfat filesystem, which is used by old Microsoft Windows Operating Systems (Windows 98 and older).
+ Linux Operating Systems (like Kevux) use the ext3, ext2, and linux swap filesystems.
+ If general, you want to use ext3 for linux because it can handle large filesystems quickly.
+ If you have a usb memory stick to run Kevux off of, then use ext2 to increase the potential lifetime of the stick (for highly technical reasons).
+ The linux swap filesystem is used to help extend memory, but because you are using a Kevux system, yuu will probably not need any swap.
+ Of course, if you have an old system, say 128 or less MB of ram, then feel free to create a linux swap filesystem of perhaps 512MB.
+
+ The grey space that has unallocated means that a partition is not created for that particular area.
+ What this means is that the unallocated area will not be available for use.
+
+ Don't use NTFS for any linux system.
+

+ Screenshot of how to partition step 4.
+

+ Again, this example is assuming that you are going to use the entire harddrive.
+ Make sure to delete any existing partitions by selecting each individual partition and deleting that partition (partition -> delete).
+ Once everything is deleted, you should only see a single massive unallocated area.
+

+ Screenshot of how to partition step 5.
+

+ Now you should be ready to create partitions.
+ First you should create the boot partition.
+ The boot partition should be of one of the following sizes: 16MB, 32MB, 64MB, 128MB, or 256MB.
+ The latter is beyond more than enough space.
+ The filesystem should be ext2 but can safely be ext3.
+
+ Next you need to create the root partition.
+ The root partition should be of one of the following size: 2048MB, 4096MB, 8192MB, 16384MB, 32768MB, 65536MB.
+ The latter is more than enough space, in fact, it is 64 Gigabytes.
+
+ Now all the remaining space will be your home partition.
+ Just fill up every last bit available.
+

+
+ +
+ +
+
+

Mounting the CD-Rom

+
+ Screenshot of mounting CD-ROM.
+

+ Okay, so you need to mount (use) the cdrom.
+ If you have only 1 cdrom drive, then you can simply type in console: mount /mnt/cdrom/01
+ If you have more than one, then you can try mounting them until you get the correct one.
+ In such a case, the next command following above might be mount /mnt/cdrom/02
+ Of course, you can almost guarantee getting the correct cdrom with the following command: mount LABEL=Turtle-0.8.8-live /mnt/cdrom, where 0.8.0 is the version of Turtle Kevux that you are mounting.
+
+ Once the cdrom is mounted, you can access the contents at the location it was mounted on.
+ This means that if you ran the command: mount /mnt/cdrom/03, then you will find the cdrom contents in the directory /mnt/cdrom/03.
+ Another example is if you mounted the cdrom with mount LABEL=Turtle-0.8.8-live /mnt/cdrom, then you will find the contents of the cdrom in the directory /mnt/cdrom
+

+
+ +
+ +
+
+

Mounting the Partition

+
+ Screenshot of mounting partition.
+

+ This will be assuming that you correctly created the partitions and mounted the cdrom based on the tutorials above.
+ Let us pretend that we only have one harddrive and therefore it's device name will be called /dev/sda.
+ This means we have 3 partitions, a boot partition at /dev/sda1, a root partition at /dev/sda2, and a home partition at /dev/sda3.
+ The order in which these are mounted DOES matter.
+
+ Now, we need to mount the root partition first.
+ This is done with the command: mount /mnt/sda/02
+ Once this is mounted, we need to create the directories that our other two directories will be mounted.
+ This is done with the command: mkdir /mnt/sda/02/{boot,home}
+
+ Now, we need to mount the boot partition.
+ This is done with the command: mount /dev/sda1 /mnt/sda/02/boot
+ This command will explicitly mount the /dev/sda1 partition to the location /mnt/sda/02/boot.
+
+ Now, we need to mount the home partition.
+ This is done with the command: mount /dev/sda3 /mnt/sda/02/home
+ This command will explicitly mount the /dev/sda3 partition to the location /mnt/sda/02/home.
+
+ You should now be ready to extract the system.
+

+
+ +
+ +
+
+

Extracting the System

+
+ Screenshot of extracting system step 1.
+
+ Screenshot of extracting system step 2.
+

+ Let us assume that you mounted the cdrom on /mnt/cdrom/.
+ If you have need to know how to do this, read the Mounting the CD-Rom.
+
+ Let us assume that you partitioned the harddrive as explained in Partitioning the System and have mounted the partitions as explained in Mounting the Partition at the location /mnt/sda/02.
+
+ There is a program designed to ease the process of the installer and set all permissions correctly.
+ Do not install without this tool unless you know what you are doing.
+ The program is called: extract_system.
+
+ Change to the extraction point: cd /mnt/sda/02/
+ Run the extraction program, specifying the mounted cdrom as the source location: extract_system -s /mnt/cdrom/
+ Wait for the program to finish.
+ You are now done extracting the system, the system is now effectively installed.
+ The next step is to configure the system so that it may boot.
+

+
+ +
+ +
+
+

Configuring the System to Boot

+
+

+ This is the very last step, aside from physically rebooting your computer.
+ Therefore, you better have read and gone through every other portion of the page.
+ This will be assuming that the system is properly extracted and mounted at: /mnt/sda/02/.
+ This will be assuming that you have 3 partitions, a boot, a root, and a home.
+
+ NOTE: If at any point during this you need to know what harddrive is what and has what partitions, the command fdisk -l should be used.
+ You should use the output from fdisk -l to properly configure the etc/fstab file.

+
+ Okay, there are two ways to boot your Turtle Kevux System, dynamically or statically.
+ The static method is less adaptable and slightly more technical given that you have to specify the exact partition locations.
+ The dynamic method is more adaptable but can under certain cases boot/mount the wrong partitions.
+ The dynamic method is the preferred method because it can cope better with hardware changes.
+
+ Screenshot of configuring boot step 1.
+
+ Static Method
+ Edit the file etc/fstab on your new system, which is located at /mnt/sda/02/etc/fstab
+ Now look for the line that reads: # Turtle-Kevux Basic Layout (Static).
+ Below this are commented out commands, and a comment is any line that starts with the pound # symbol.
+ There are two lines to pay attention to, the ones that begin with #/dev/sda1 and #/dev/sda3.
+ Uncomment these lines by deleting the leading pound # symbol.
+ These are already pre-configured to work as is based on this documentation.
+
+ Screenshot of configuring boot step 2.
+
+ The next step is to edit the boot/grub/menu.lst file currently located at /mnt/sda/02/boot/grub/menu.lst
+ There are a lot of notes in this file, so you will need to search for the following lines:
+ - The line: splashimage=(hd0,0)/boot/grub/turtle_grub.xpm.gz
+ - The line: title Boot System
+
+ The first thing to pay attention to are the lines with (hd0,0).
+ If you followed the instructions in this documentation, then you will not have to pay attention to these.
+ However, the importance of these lines deem it necessary to at least make you take not of them for future reference.
+ Now that that is out of the way, the only line you should have to pay attention is the second line below title Boot System.
+ It is the line that begins with kernel
+
+ On this line, you need to scroll down that entire long line and change finalroot=LABEL=turtle_/ to /dev/sda2
+ Notice how this information directly relates to what you did with the etc/fstab file that is currently located at /mnt/sda/02/etc/fstab
+
+ You are now done with the static configuration, skip below to the grub/mbr installation below.
+
+ WARNING: When editing any and all files, don't forget to save them before quitting or all of the typing that you did will have to be repeated.
+
+ Screenshot of configuring boot step 1.
+
+ Dynamic Method
+ Edit the file etc/fstab on your new system, which is located at /mnt/sda/02/etc/fstab
+ Now at the very top of the file you should see: # Turtle-Kevux Embedded Layout (Dynamic)
+ There are two lines to pay attention to, the ones that begin with: #LABEL=turtle_/boot and #LABEL=turtle_/home
+ Uncomment these lines by deleting the leading pound # symbol.
+ Notice that each of these lines start with LABEL=, this means that you are using the devices based on a name that you give them.
+ These devices currently do not have names, so we need to create them.
+ The names MUST be identical to the names define in the etc/fstab file located at /mnt/sda/02/etc/fstab.
+
+ To create the name for the first one, the boot partition which is currently the partition defined at /dev/sda1, you need to type the following: e2label /dev/sda1 turtle_/boot
+ Notice that there is no LABEL= preceding the turtle_/boot.
+ If you were to execute the command e2label /dev/sda1 LABEL=turtle_/boot, then your etc/fstab file would have to have the line: LABEL=LABEL=turtle_/boot.
+ Repeat the process, this time for the root partition currently located at /dev/sda2: e2label /dev/sda2 turtle_/
+ repeat the process, this time for the home partition currently located at /dev/sda3: e2label /dev/sda3 turtle_/home
+ If you change the names of these partitions to something else, make sure to reflect the changes in the etc/fstab file which is currently located at /mnt/sda/02/etc/fstab.
+
+ WARNING: The command e2label will not work if you did not format the partitions with the ext2 or ext3 filesystems.
+ WARNING: Because the dynamic method mounts based on names, if two partitions have the same name, then something will most likely go wrong.
+ This is one of the few problems with the dynamic method.

+
+ Screenshot of configuring boot step 2.
+
+ The next step is to edit the boot/grub/menu.lst file currently located at /mnt/sda/02/boot/grub/menu.lst
+ There are a lot of notes in this file, so you will need to search for the following lines:
+ - The line: splashimage=(hd0,0)/boot/grub/turtle_grub.xpm.gz
+ - The line: title Boot System
+
+ The first thing to pay attention to are the lines with (hd0,0).
+ If you followed the instructions in this documentation, then you will not have to pay attention to these.
+ However, the importance of these lines deem it necessary to at least make you take not of them for future reference.
+ Now that that is out of the way, the only line you should have to pay attention is the second line below title Boot System.
+ It is the line that begins with kernel
+
+ On this line, you need to scroll down that entire long line and look at the part that has finalroot=LABEL=turtle_/.
+ Notice how this information directly relates to what you did with the etc/fstab file that is currently located at /mnt/sda/02/etc/fstab
+ This is the line that tells the boot process which partition is the root partition.
+ Because the file is pre-configured to use the dynamic method you will not have to change this unless you gave the root partition a name different from turtle_/.
+
+ You are now done with the dynamic configuration, skip below to the grub/mbr installation below.
+
+ WARNING: When editing any and all files, don't forget to save them before quitting or all of the typing that you did will have to be repeated.
+
+ Screenshot of configuring boot step 3.
+
+ Screenshot of configuring boot step 4.
+
+ grub/mbr installation
+ The grub file was configured, but it was not installed into what is called the mbr (master boot record).
+ This mbr tells the system how to boot.
+ Therefore it needs to be installed.
+
+ The first step is to start the program by running: grub.
+ Now, remember those (hd0,0) lines from the boot/grub/menu.lst file currently location at /mnt/sda/02/boot/grub/menu.lst?
+ Well, now you have to type the following: root (hd0,0)
+ Don't forget to press the enter key.
+ That line tells the grub program that you will install to the first harddrive (the 0 to the left of the comma) and to look for the boot/grub/menu.lst file on the first partition (the 0 to the right of the comma) of that harddrive.
+ The next command installs the grub program to the mbr.
+ The command to install grub is: root (hd0)
+ This will install grub to the mbr of the first harddrive.
+ Now exit the program (assuming everything worked) with the quit command:quit.
+
+ You should now be completely finished the installation process and can reboot your machine.
+ an easy way to do this is type the command: reboot or press the Control + Alt + Delete key sequence.
+

+
+
+
+
+
+ + diff --git a/distributions/turtle/documentation/problems.html b/distributions/turtle/documentation/problems.html new file mode 100644 index 0000000..521cbea --- /dev/null +++ b/distributions/turtle/documentation/problems.html @@ -0,0 +1,150 @@ + + + + Documentation - Turtle Kevux - Known Issues + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Known Issues

+
+ +
+
+
+

Printing Support

+
+
    +
  • No real printer support, current printer support is experimental.
  • +
  • The only available printing software on linux in general is quite lacking, not well written, and very unstable.
  • +
  • LPR is available for anyone willing to learn how to use it.
  • +
  • Anyone willing to help get printing to work and work properly within the requirements of Kevux, your assistance is welcome.
  • +
  • Good Luck with printing.
  • +
+
+ +
+ +
+
+

Stack Protection

+
+
    +
  • There are a large number of programs that might crash with "stack smashing attack" as the message.
  • +
  • This system has stack protection enabled in a number of programs, when a program tries to do something to harm the system (intentionally or accidentally) then "stack smashing attack" is present and the program exits.
  • +
  • This may happen a lot because the quality of software out there is quite poor and insecure programming is quite rampant.
  • +
  • Better to have the program quit than to allow the program to damage parts of the system and potentially grant system access to an attacker.
  • +
+
+ +
+ +
+
+

Miscellaneous Issues

+
+ +
Manpage Support
+
    +
  • Manpages exist on the system, but there is no tool available to parse and read them on this system.
  • +
+ +
Remote Desktop sftp Support
+
    +
  • The remote desktop client, called Remmina, is currently failing to decrypt valid passwords while connected to an SSH server.
  • +
+ +
IPV6 Issues
+
    +
  • There is no dhcp support for ipv6 at this time, but support is planned.
  • +
+
+
+
+
+
+ + diff --git a/distributions/turtle/documentation/running.html b/distributions/turtle/documentation/running.html new file mode 100644 index 0000000..c854218 --- /dev/null +++ b/distributions/turtle/documentation/running.html @@ -0,0 +1,493 @@ + + + + Documentation - Turtle Kevux - Booting and Running + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Booting and Running

+
+ +
+
+
+

Booting Live System

+
+ Screenshot of system bootup.
+

+ This tutorial is assuming that you have either a live-usb or a live-cdrom.
+ In order to boot the Live system you need to have your computer boot the device by rebooting the computer.
+ While booting your machine, you may have to press a key to select boot options or something of similar meaning.
+ Note: live-usb's cannot be directly booted to on most machines that only support usb 1.1 or less.
+ To boot a live-usb on a usb 1.1 system, you will need a live cdrom that contains the appropriate grub.
+
+ Available Boot Options:
+ +    Install Kevux System
+    Boot Live System - Run From Memory
+    Boot Live System - Run From CD-Rom
+    Maintenance Mode
+    Check Memory
+
+
+

    +
  • Install Kevux System:
    + This boots to a live install system that runs either from memory or from the cdrom.
    + The installation system is called KiWI and includes documentation on how to install the system.
    +
    +
  • +
  • Boot Live System - Run From Memory:
    + This is the default boot option.
    + This boot process will copy the compressed system into ram and run itself from ram.
    + This boot process requires 384MB to 512MB of System Ram for the "everything" build.
    + To calculate how much memory your particular build will require add the files sizes of the following files:
    +
      +
    • bin.sfs
    • +
    • lib.sfs
    • +
    • sbin.sfs
    • +
    • share.sfs
    • +
    • home.sfs
    • +
    • etc.sfs
    • +
    + Once these file sizes are added up, add 70MB (for approximate runtime memory usage) to the results.
    + Round the results to the nearest memory size; usually one of the following: 4, 8, 16, 32, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048
    + This boot option will take some amount of time, ~20 seconds, to copy itself into memory.
    + Once the system is booted, the cdrom or usb may be removed without causing any problems.
    + Once the system is booted, most/all programs start instantly or within the first 1 to 6 seconds of waiting.
    +
    +
  • +
  • Boot Live System - Run From CD-Rom:
    + This is the least flexible boot option.
    + This will not copy itself into memory, saving boot time by not having to copy itself into memory.
    + The downside is that much more time is lost because the system has to read the device every single time something is needed, slowing the execution process significantly.
    + This boot process requires 64MB to 128MB or System Ram for the "everything" build.
    + Once the system is booted, the cdrom or usb must NOT be removed or problems will occur.
    + Once the system is booted, most programs will start within the 5 to 30 seconds.
    +
    +
  • +
  • Maintenance Mode:
    + This will immediately drop to the initrd bash environment.
    + This allows you to manually and safely run fsck or similar commands for a particular system.
    + When any of the boot options above fail, you will always be dropped into this mode.
    + This is especially useful when the rootfs doesn't exist, the kernel will not lockup and you can still hit control+alt+delete
    +
    +
  • +
  • Check Memory:
    + This will start a dedicated memory tester.
    + Run this for a few hours to give a decently thorough memory check.
    + Reboot the machine to get out of this mode.
    +
    +
  • +
+
+ Advanced Kevux-Specific Boot Options
+
    +
  • finalroot=
    + Specifies the what root device partition is to be used before starting the system.
    + Unlike the standard root=, finalroot= allows for any device naming system that the mount command can use.
    + The primary use of finalroot= is to boot to a device by name and not by the device's physical number.
    + This is especially useful for livecd's, liveusb's, and other dynamic systems.
    + Do not use root= to boot a root filesystem, if you are using a kevux initrd.
    + The root= option tells the kernel to load the initrd as the first rootfs.
    +
    +
  • +
  • finalinit=
    + Specifies what the init program is to be called after switching to the finalroot.
    + Do not use init= to specify the init program, if you are using a kevux initrd.
    + The init= option tells the kernel to load the initrd specific init program.
    +
    +
  • +
  • subroot=
    + Allows one to load a rootfs from a specific folder inside of the finalroot device.
    + This should allow one to have multiple rootfs's on a single partition.
    + This can be useful for having different versions of the same system on a single partition without having any conflicts.
    + Because the system will be running from withing the subroot, the final system will not be able to directly see any of the other subroots or the / of the actual partition.
    +
    +
  • +
  • maintenance
    + This tells the initrd to immediately drop to the initrd's /bin/bash.
    + This normally loads the maintenance initrd.
    +
    +
  • +
  • settings=
    + This specifies a device that contains additional settings information in the same way finalroot= specifies a device.
    + The additional settings information currently only supports encrypted boot settings.
    + In the future, this is expected to be expanded and will also be used to perform network booting.
    + All settings data is expected to be stored in the /boot/settings/ directory within the settings device.
    +
    +
  • +
  • settingsname=
    + The settings name represent a sub-directory within the /boot/settings/ directory.
    + This allows for having multiple different settings data on a single settings device without conflicts.
    + For example, lets say you have two sub-directories called: encrypted and network.
    + By specifying the settingsname=network would mean that the network boot settings would be processed.
    + By specifying the settingsname=encrypted would mean that the encrypted boot settings would be processed.
    + If not settings name is passed, then the default is to use the files found within the /boot/settings/ directory and not some sub-directory.
    +
    +
  • +
  • settingscdromsearch=
    + This is identical to the cdromsearch= option explained below but only for finding the settings device.
    +
    +
  • +
  • settingsmmcsearch=
    + This is identical to the mmcsearch= option explained below but only for finding the settings device.
    +
    +
  • +
  • runlevel=
    + Use this to execute a specific set of init instructions during system boot.
    + These instructions are defined in /etc/initng/runlevel/.
    + The default runlevel is called: /etc/initng/runlevel/default.runlevel.
    + The KiWI installer uses the runlevel called: /etc/initng/runlevel/kiwi.runlevel.
    +
    + Example:
    + If you wish to boot to a runlevel called single (/etc/initng/runlevel/single.runlevel), you would use the boot command: runlevel=single.
    +
    +
  • +
  • squashboot=
    + This tells the initrd to execute the live_init script using the squash compressed files.
    + When this is specified, the finalroot= option is expected to be the partition, cdrom, or some device where the squash files are located.
    + The squash files are expected to be in the directory /boot/live/ of the finalroot device.
    + There are the following parameters available:
    +
      +
    • device - this means run the squash files directly from the finalroot device
    • +
    • memory - this means copy the squash files into memory and run from memory
    • +
    • extract - this means extract the squash files into memory and run from memory
    • +
    + The live_init defines an entirely new set of options explicitly useful for booting a livecdrom, a liveusb, or any system compressed into squash files
    +
    + Squash Specific Boot Options
    +
      +
    • squashpath=
      + Specify a subdirectory or path on the finalroot= device that contains the squash files.
      + This applies to both squashboot and squishboot boot modes.
      +
      +
    • +
    • filesystemlimit=
      + Specify a hard limit on how large the memory filesystem will be.
      + By default, no limit is set.
      + The Boot Live System - Run From Memory (uncompressed) boot option does set a size limit that is over a 1GB
      +
      +
    • +
    • etcdevice=
      + Specify the physical partition that contains the etc directory.
      + This will be mounted to the /etc directory of the finalroot system.
      + For using an ecrypted partition, this should be set to something like: etcdevice=/dev/mapper/etc
      +
      +
    • +
    • homedevice=
      + Specify the physical partition that contains the home directory.
      + This will be mounted to the /home directory of the finalroot system.
      + For using an ecrypted partition, this should be set to something like: homedevice=/dev/mapper/home
      +
      +
    • +
    • vardevice=
      + Specify the physical partition that contains the var directory.
      + This will be mounted to the /var directory of the finalroot system.
      + For using an ecrypted partition, this should be set to something like: vardevice=/dev/mapper/var
      +
      +
    • +
    • tmpdevice=
      + Specify the physical partition that contains the tmp directory.
      + This will be mounted to the /tmp directory of the finalroot system.
      + For using an ecrypted partition, this should be set to something like: tmpdevice=/dev/mapper/tmp
      +
      +
    • +
    • xorg=
      + Manually specify whether or not xorg should be started on boot.
      + Whether or not this works is explicitly dependent on whether or not any of the boot terminals are set to auto-start.
      + The default action is to auto-start a terminal on tty1 and that terminal will start xorg.
      + There are the following parameters available:
      +
        +
      • yes - this means to start xorg if terminal auto-start is enabled on the system. (this is the default)
      • +
      • no - this means do not start xorg if terminal auto-start is enabled on the system and therefore only a terminal is started.
      • +
      +
      +
    • +
    • share=
      + Specify whether or not to make the share available on a live system.
      + For the squashinit=extract and squashinit=memory commands, more memory than normal is needed to cope with the additional space needed for the share.
      + There are the following parameters available:
      +
        +
      • yes - this means to include the share.sfs file when booting the live system. (this is the default)
      • +
      • no - this means to not include the share.sfs file when booting the live system, saving memory.
      • +
      +
      +
    • +
    • toolchain=
      + Specify whether or not to make the toolchain available on a live system.
      + For the squashinit=extract and squashinit=memory commands, more memory than normal is needed to cope with the additional space needed for the toolchain.
      + Use this for compilation software such as gcc.
      + There are the following parameters available:
      +
        +
      • yes - this means to include the toolchain.sfs file when booting the live system.
      • +
      • no - this means to not include the toolchain.sfs file when booting the live system, saving memory. (this is the default)
      • +
      +
      +
    • +
    • documentation=
      + Specify whether or not to make the documentation available on a live system.
      + For the squashinit=extract and squashinit=memory commands, more memory than normal is needed to cope with the additional space needed for the documentation.
      + There are the following parameters available:
      +
        +
      • yes - this means to include the documentation.sfs file when booting the live system.
      • +
      • no - this means to not include the documentation.sfs file when booting the live system, saving memory. (this is the default)
      • +
      +
      +
    • +
    • package=
      + Specify whether or not to make the package available on a live system.
      + For the squashinit=extract and squashinit=memory commands, more memory than normal is needed to cope with the additional space needed for the package.
      + Use this for package management (installing and uninstalling software).
      + There are the following parameters available:
      +
        +
      • yes - this means to include the package.sfs file when booting the live system.
      • +
      • no - this means to not include the package.sfs file when booting the live system, saving memory. (this is the default)
      • +
      +
      +
    • +
    • python=
      + Specify whether or not to make the python available on a live system.
      + For the squashinit=extract and squashinit=memory commands, more memory than normal is needed to cope with the additional space needed for the python.
      + There are the following parameters available:
      +
        +
      • yes - this means to include the python.sfs file when booting the live system.
      • +
      • no - this means to not include the python.sfs file when booting the live system, saving memory. (this is the default)
      • +
      +
      +
    • +
    • perl=
      + Specify whether or not to make the perl available on a live system.
      + For the squashinit=extract and squashinit=memory commands, more memory than normal is needed to cope with the additional space needed for the perl.
      + There are the following parameters available:
      +
        +
      • yes - this means to include the perl.sfs file when booting the live system.
      • +
      • no - this means to not include the perl.sfs file when booting the live system, saving memory. (this is the default)
      • +
      +
      +
    • +
    • install=
      + Specify whether or not to make the installation files available on a live system so that installation may properly function.
      + You should also specify runlevel=kiwi to boot to the installation program.
      + There are the following parameters available:
      +
        +
      • kiwi - this means that the squash installation files are at the /boot/live directory of the final root device. (this is the default)
      • +
      • /path/to/installation/directory - this means that the installation squash files are the specified path of the final root device. (this must begin with a leading slash)
      • +
      +
      +
    • +
    + + NOTE: Nothing can be written to the primary system files when squashinit=device and squashboot=memory are used.
    + NOTE: When squashboot=extract is used, these files can be written to, but will be lost during reboots.
    +
    +
    +
  • +
  • squishboot=
    + This is a hybrid between booting with squashboot and normal boot.
    + Instead of running the entire system from squash files, only the primary binaries /bin, /sbin, /lib, and /toolchain are mounted via squash.
    + Everything else is expected to be on the final root fs, already extracted.
    + This allows for having compressed binaries on a small device while maintaining normal write behavior for most things.
    + This method requires much less ram than squashboot.
    + The squash files are expected to be in /live/boot/ of the final root system by default.
    + Most of the additionaly squashboot options are supported and are renamed from squash to squish accordingly.
    + For parameter conflict resolution, squishboot will override squashboot.
    + This is particularly useful for embedded devices and the OLPC-XO.
    +
    +
  • +
+

+
+ +
+ +
+
+

What Should Happen

+
+ Screenshot of desktop.
+

+ When all things work correctly, you should end up sitting on an XFCE desktop screen with a backgroup picture of a stream in a forest.
+ This is the default desktop environment and the default layout.
+ Enjoy.
+
+ If you do not want a graphical display to appear on system startup, then you can append xorg=no as a kernel boot parameter.
+

+
+ +
+ +
+
+

Something Went Wrong

+
+ Screenshot of boot failure.
+

+ Unfortunately, not all things work all of the time.
+ Whenever something goes wrong with the boot process, you will get stuck with a login prompt.
+ In order to Login, see Logging In Below.
+
+ Okay, so the system started up but you are not sitting in a graphical XFCE desktop with the kevux logo in the background.
+ In this situation, the most probably cause is that the Xorg (and therefore XFCE) failed to start.
+ The most common cause of this is a video card problem.
+ To fix this problem, you will need to manually tell xorg to use your particular video card or use vesa.
+
+ WARNING: This may require some moderate to advanced knowledge of the linux command line and understanding of what your video card specifically is.
+
+ If the system is not responding then you may need to be able to boot the system without xorg, so add the xorg=no boot parameter in the grub config at boot time.
+ Once you find a way to login you need to edit the /etc/X11/xorg.conf file to work with your appropriate video card.
+ To add your video card to the xorg.conf file, scroll to the bottom of that file looking for the part that begins with Section "Device"
+ Inside of this section, look for the part that begins with #Driver
+ Uncomment this line by removing the leading #.
+ On the same line, to the immediate right, you should see something text surrounded in double quotes.
+ Replace that text with the appropriate video card driver name.
+ If you do not know the proper driver then you will have to do some researching or asking for assistance as determining this is advanced and may be complex.
+ You may be able to identify your video card by running the command lspci and looking for a line that has VGA Compatible controller or Display controller.
+
+ For the actual login process, see the Logging In below.
+
+ If all else fails and you still cannot get into the system, try booting into maintenance mode by passing the grub command line option: maintenance.
+ However, using maintenance mode almost definitely requires advanced to expert knowledge.
+

+
+ +
+ +
+
+

Logging In

+
+ Screenshot of logging in step 1.
+

+ The login screen is pretty straight-forward.
+ Just type in your username and you will be prompted for a password.
+ The default username is turtle
+ The default password is kevux\
+ Do not forget the trailing slash: \
+

+
+ Screenshot of logging in step 2.
+

+ Immediately following a successful login, you will be prompted for the particular type of login.
+
+ Login Types:
+   Terminal - Drop to a Terminal (Console).
+   Webbrowser - Drop to a command-line webbrowser (Console).
+   Xorg - Start Xorg (Graphical Display) using the manager defined in ~/.xinitrc (This is the default).
+

+
+ Screenshot of logging in step 3.
+

+ If you selected Terminal, then you will see a login prompt where you can type in any console commands you desire.
+ This console environment uses the bash shell.
+

+
+ +
+ +
+
+

Virtual Machines

+
+

+ Running Kevux on a virtual machine is pretty straight-foward and therefore only known issues will be listed here.
+
+ Physical Address Extension, aka PAE, is used by this system.
+ If the virtual machine does not have PAE, support enabled, then the system will not boot.
+
+ Hardware Virtualization features such as VT-z/AMD-V, are know to prevent GRUB from booting properly.
+ If for any reason your system does not boot, try disabling VT-z/AMD-V, support.
+

+
+
+
+
+
+ + diff --git a/distributions/turtle/documentation/servers.html b/distributions/turtle/documentation/servers.html new file mode 100644 index 0000000..37e2198 --- /dev/null +++ b/distributions/turtle/documentation/servers.html @@ -0,0 +1,412 @@ + + + + Documentation - Turtle Kevux - Server Configuration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Server Configuration

+
+ +
+
+
+

Configuring Camsource Server

+
+ Screenshot of configuring Camsource server.
+

+ Configuration Path: /home/targets/webcam/settings/
+
+ The Files: +

    +
  1. camsource.conf
  2. +
  3. camsource.conf.v4l1
  4. +
  5. camsource.conf.v4l2
  6. +
+ + File 1:
+   This is the file processed by the camsource server, changes to this file will effect the server on restart.
+
+ File 2:
+   This is an example camsource.conf using a Video4Linux 1 Device.
+
+ File 3:
+   This is an example camsource.conf using a Video4Linux 2 Device.
+
+ + Notes: +
    +
  • The configuration file is an XML file, XML syntax rules do apply.
  • +
  • <path>/dev/video0</path> specifies the Video Device to use
  • +
  • <input>0</input> specifies the particular capture port on the card
  • +
  • <norm>ntfs0</norm> specifies the media format the signal is transmitted as
  • +
+

+
+ +
+ +
+
+

Configuring Lighttpd Server

+
+ Screenshot of configuring Lighttpd server.
+

+ Configuration Path: /home/targets/web/settings/
+
+ The Files: +

    +
  1. lighttpd.conf
  2. +
+ + File 1:
+   This is the configration file for the lighttpd server.
+
+ + Notes: +
    +
  • The configuration file format is a bash-like syntax; bash comment rules apply.
  • +
  • server.document-root specifies the system path where the website root exists, default is /home/websites/
  • +
  • server.port specifies the port the server listens on, default is 80
  • +
+

+
+ +
+ +
+
+

Configuring MPD Server

+
+ Screenshot of configuring MPD server.
+

+ Configuration Path: /home/targets/music/settings/
+
+ The Files: +

    +
  1. mpd.conf
  2. +
+ + File 1:
+   This is the configration file for the mpd server.
+
+ + Notes: +
    +
  • The configuration file format is a bash-like syntax; bash comment rules apply.
  • +
  • music_directory specifies where the available music exists, default is /home/music/
  • +
  • port specifies where the port the server listens on, default is 6600
  • +
+

+
+ +
+ +
+
+

Configuring MaraDNS Server

+
+ Screenshot of configuring MaraDNS server.
+

+ Configuration Path: /home/targets/dns/settings/
+
+ The Files: +

    +
  1. mararc
  2. +
  3. example_authoritative_mararc.txt
  4. +
  5. example_example_csv1
  6. +
  7. example_example_csv1.txt
  8. +
  9. example_example_csv2
  10. +
  11. example_full_mararc
  12. +
  13. example_mararc
  14. +
  15. example_recursive_mararc.txt
  16. +
+ + File 1:
+   This is the configuration file for the mararc server
+
+ Files 2-8:
+   These are different examples of how to configure mararc
+   * Files 3 & 4 appear to be identical and one will be removed in the future
+
+ + Notes: +
    +
  • The configuration file format is a bash-like syntax; bash comment rules apply.
  • +
+

+
+ +
+ +
+
+

Configuring NTP Server

+
+ Screenshot of configuring NTP server.
+

+ Configuration Path: /home/targets/time/settings/
+
+ The Files: +

    +
  1. ntp.conf
  2. +
+ + File 1:
+   This is the configuration file for the ntp server
+
+ + Notes: +
    +
  • The configuration file format is a bash-like syntax; bash comment rules apply.
  • +
  • This is easy to configure, just uncomment the servers you want to pull from and comment out all others
  • +
+

+
+ +
+ +
+
+

Configuring Postgres Server

+
+

+ Configuration Path: /home/targets/database/settings/
+
+ The Files: +

    +
  1. postgresql.conf
  2. +
  3. pg_hba.conf
  4. +
  5. pg_ident.conf
  6. +
+ + File 1:
+   This is the configuration file for the particular postgres database
+
+ File 2:
+   This file manages what computers or ip blocks can access the postgres server at all
+   Make sure to read the documentation present in this file
+
+ File 3:
+   This file maps user names to postgresql database user names
+   This is useful if the current username connects to the database under a different name
+   Make sure to read the documentation present in this file
+
+ + Initial Setup:
+   Create the database:
+     su - t_database -c '/bin/initdb -D /home/targets/database/data -E UTF8 --locale=en_US.UTF-8'
+
+ + Notes: +
    +
  • The configuration file format is a bash-like syntax; bash comment rules apply.
  • +
  • The configuration files are specific to each database, such that if you were to change the Create the database path from /home/targets/database/data to /home/targets/database/somewhere then you would need to edit the configuration files at /home/targets/database/somewhere/. +
+

+
+ +
+ +
+
+

Configuring RSync Server

+
+ Screenshot of configuring RSync server.
+

+ Configuration Path: /home/targets/rsync/settings/
+
+ The Files: +

    +
  1. rsyncd.conf
  2. +
+ + File 1:
+   This is the configuration file for the rsync server
+
+ + Notes: +
    +
  • The configuration file Initial Setup:
    +   Create the database:
    +     su - postgresd -c '/bin/initdb -D /home/targets/postgresd/database'
    +
    format is a bash-like syntax; bash comment rules apply.
  • +
+

+
+ +
+ +
+
+

Configuring SSH Server

+
+ Screenshot of configuring SSH server.
+

+ Configuration Path: /home/targets/ssh/settings/
+
+ The Files: +

    +
  1. sshd_config
  2. +
  3. banner
  4. +
  5. moduli
  6. +
  7. ssh_prng_cmds
  8. +
  9. ssh_host_dsa_key
  10. +
  11. ssh_host_dsa_key.pub
  12. +
  13. ssh_host_ecdsa_key
  14. +
  15. ssh_host_ecdsa_key.pub
  16. +
  17. ssh_host_key
  18. +
  19. ssh_host_key.pub
  20. +
  21. ssh_host_rsa_key
  22. +
  23. ssh_host_rsa_key.pub
  24. +
+ + File 1:
+   This is the ssh server configuration file
+
+ + File 2:
+   This will display information to a client making a connection attempt to the server
+   This can expose information to an attacker that might be useful and therefore is disabled by default
+
+ + Files 3 & 4:
+   These files are not required and may not even be used anymore; you can safely ignore these.
+
+ + Files 5 to 12:
+   These files are auto-generated by the initng start script.
+   You can create these manually by calling the setup_ssh_host_keys script.
+
+ + Notes: +
    +
  • The configuration file format is a bash-like syntax; bash comment rules apply.
  • +
  • The setup_ssh_host_keys command will create more files in the /home/targets/ssh/settings/ directory. These files begin with ssh_host_.
  • +
  • Port specifies where the port the server listens on, default is 22
  • +
  • Banner specify a file to enable, comment out to disable
  • +
+

+
+ +
+ +
+
+

Configuring Subversion Server

+
+ Screenshot of configuring Subversion server step 1.
+

+ Configuration Path: /home/targets/subversion/settings/
+
+ The Files: +

    +
  1. servers
  2. +
+ + File 1:
+   This is the subversion server configuration file
+
+ + Notes: +
    +
  • The configuration file format is a bash-like syntax; bash comment rules apply.
  • +
  • NOTE: The subversion database should already be created at /home/targets/subversion/data/
  • +
  • If the server already exists, then you will need to remove the existing one as shown in the example picture (rm -Rf /home/targets/subversion/data)
  • +
  • WARNING: The subversion server uses plaintext passwords in the configuration file
  • +
+

+
+
+
+
+
+ + diff --git a/distributions/turtle/documentation/software.html b/distributions/turtle/documentation/software.html new file mode 100644 index 0000000..456174c --- /dev/null +++ b/distributions/turtle/documentation/software.html @@ -0,0 +1,224 @@ + + + + Documentation - Turtle Kevux - Software Listing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Software Listing

+
+ +
+
Available Servers:
+ +
+
Available Internet Applications:
+ +
+
Available Artistic Applications:
+ +
+
Available Document Editors/Viewers/Presenters:
+ +
+
Available Utilities:
+ +
+
Available Games:
+ +
+
Available Multimedia Applications:
+ +
+
Available Desktop Environments:
+ +
+
Available Filesystem Utilities:
+ +
+
+
+
+ + diff --git a/documentation.html b/documentation.html new file mode 100644 index 0000000..f171cb5 --- /dev/null +++ b/documentation.html @@ -0,0 +1,311 @@ + + + + Kevux Systems and Software - Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Documentation

+
+ +
+
+

Projects

+
+
+

+ Documentation for the following projects are provided within their own sub-pages. +

+ +
    +
+
+
+ +
+
+

Specifications

+
+
+

+ Projects like the Featureless Linux Library are focused entirely around provided standards for every aspect of the project. Numerous specifications are available describing these standards. At this time, the specifications have not been transcribed into a format for the web. They are stored in plain text within the source code repositories. +

+

+ Many of these specifications may be found here: +

+ +
+
+ +
+
+

APIs

+
+
+

+ The APIs have not yet been generated and are not available in an easy to consume form outside of the source code itself. +

+

+ The API can be viewed by navigating the source code for the FLL here: +

+ +
+
+ +
+
+

Terminology

+
+
+

+ One of the biggest problems with an API is the mis-use or misunderstanding of the meaning and purpose of one. The term itself is not the most accurate and is also not ideal. A more appropriate term would be a Library Interface or a Software Interface. +

+ +
+
+

Standard

+
+
+

+ A set of rules and guidelines. +

+
+
+ +
+
+

Specification

+
+
+

+ A specific interpretation, clarification, or description of a Standard, such as the documentation that describes how to use or follow a Standard. +

+
+
+ +
+
+

Implementation

+
+
+

+ The applying of some Standard or Specification. +

+
+
+ +
+
+

Application Programming Interface (API)

+
+
+

+ The API term is commonly mis-represented as Services or Protocols (such as "Web API"). An API instructs a programmer how to use a dependency when programming some software that utilizes said dependency. An API is a Specification of some Implementation of a Standard be it a formally defined standard or an informally defined standard. An API may be an Implementation of a Standard or a part of an Implementation of a Standard. An API is, in effect, documentation. +

+
+
+ +
+
+

Application Binary Interface (ABI)

+
+
+

+ The ABI term refers to an Application Binary Interface and represents the compiled implementation of some API. An ABI may not always exist for some API, such as for pure scripting languages. An ABI is neither a Specification nor a Standard. An ABI is an Implementation of an API making it an Implementation of a Standard or Specification. +

+
+
+ +
+
+

Service

+
+
+

+ Any action or labor performed by one party for another party (such as one person helping another person). +

+
+
+ +
+
+

Protocol

+
+
+

+ In the context of computers and software, this is a Standard focused on communication between two parties (often referring to Internet communication). +

+
+
+
+
+
+
+
+ + diff --git a/documentation/byte_dump.html b/documentation/byte_dump.html new file mode 100644 index 0000000..66db8cc --- /dev/null +++ b/documentation/byte_dump.html @@ -0,0 +1,277 @@ + + + + Documentation - Byte Dump + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Byte Dump Documentation

+
+ +
+
+

About

+
+
+

+ The byte_dump program is a tool for parsing and printing the bytes of all data within one or more files. +

+

+ This tool operates similar to the classic hexdump program and provides similar functionality. However, the byte_dump program is not intended to be a complete replacemenet. Unlike the hexdump program, the byte_dump program is fully UTF-8 aware and even validates the Unicode sequences. +

+

+ This tool is designed to be scriptable and accepts piped input, treating the piped input as a file being read. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-b--binaryDisplay binary representation.
-d--decimalDisplay decimal representation.
-D--duodecimalDisplay duodecimal representation.
-x--hexidecimalDisplay hexadecimal representation.
-o--octalDisplay octal representation.
-U--unicodeDisplay using Unicode representation for valid Unicode (like: U+0000).
-f--firstStart reading at this byte offset.
-l--lastStop reading at this (inclusive) byte offset.
-N--narrowUse narrow display, resulting in 1*width reducing size of the text columns.
-p--placeholderUse a placeholder character instead of a space for placeholders.
-t--textInclude a column of text when displaying the bytes.
-W--wideUse wide display, resulting in 2*width allowing for space for wide characters in the text columns.
-w--widthSet number of columns of Bytes to display.
+
+

+ The output is broken up into two or three parts. +

+
    +
  1. The first part, on the left mode side of the output, contains 16 upper case hexidecimal digits representing the maximum length supported by the byte_dump program.
  2. +
  3. The second part displays the individual bytes in a numeric format or similar (depending on parameters). In the second part, the hexidecimal digits are never swapped based on endianness.
  4. +
  5. The third part, which only appears when using the -t/--text parameter, displays the character each digit or set of digits may represent. Any characters considered unsafe or improper are substituted with a replacement character.
  6. +
+
+
+
+
+
+ + diff --git a/documentation/control.html b/documentation/control.html new file mode 100644 index 0000000..f81499a --- /dev/null +++ b/documentation/control.html @@ -0,0 +1,234 @@ + + + + Documentation - Control + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Control Documentation

+
+ +
+
+

About

+
+
+

+ The control program is a tool for sending commands to the controller program. +

+

+ This tools is currently incomplete and is not guaranteed to work with the controller program. Further development will be made on this once the controller program is updated. The next development series is planned to focus on networking, which will include support for this. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-n--nameSpecify the name of the controller socket file.
-R--returnPrint a message about the response packet.
-s--settingsSpecify a directory path or a full path to the control settings file.
-k--socketSpecify a directory path or a full path to the controller socket file.
+
+

+ When the --socket parameter represents a directory path then the file name is generated from either the --name parameter or from the control settings file. +

+

+ A rule action allows for either the full rule path, such as 'boot/root' as a single parameter or two parameters with the first representing the rule directory path 'boot' and the second representing the rule base name 'root'. +

+

+ The --return parameter is intended to be used for scripting and is of the form "response [type] [action] [status]". +

+

+ Be sure to use the ++quiet parameter to suppress output when using this in scripting. + No response is returned on program errors, especially those errors that prevent communicating to the controller. +

+
+
+
+
+
+ + diff --git a/documentation/controller.html b/documentation/controller.html new file mode 100644 index 0000000..b2d4bee --- /dev/null +++ b/documentation/controller.html @@ -0,0 +1,278 @@ + + + + Documentation - Controller + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Controller Documentation

+
+ +
+
+

About

+
+
+

+ The controller program is a tool for controller other programs. +

+

+ This tool is designed to configured to perform and execute any tasks given across multiple languages and it also has support for operating as an init program. There are special compile-time configurations needed to make this properly operate as an init program. +

+

+ This tool operates similar to the fake program and can even be seen as an evolution to the fake program. The controller program, however is not a replacement to the fake program as it is more generalized. +

+

+ This tool also provides additional features for making it easierr to test and write controller instructions. These features include partial simulation and validation modes. +

+

+ In partial simulation mode, anything that the controller program has full control over and can simulate is simulated. Actual programs and scripts themselves, therefore, cannot be simulated. However, it may be possible to use an environment variables or similar and pass settings to the called program or script if the called program or script is simulation and testing aware. +

+

+ The validation mode is for making this tool more scriptable. By providing validation, the controller instructions can be validated, in which case a success or failure result is returned and any problems or warnings may be printed to the caller of this tool. +

+

+ This tool is not currently fully functional as an init program replacement because the networking aspects are not yet written or fully hashed out. The contol program is also another key part to the contoller program in getting this to work as an init program. Ideally, once this support is complete, it should be possible to replace init programs, such as SystemD, with the controller program. +

+

+ Further development will be made on this once the controller program is updated. The next development series is planned to focus on networking, which will include support for this. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-c--cgroupSpecify a custom control group file path, such as '/sys/fs/cgroup/'.
-d--daemonRun in daemon only mode (do not process the entry).
-I--initThe program will run as an init replacement.
-i--interruptibleDesignate that this program can be interrupted by a signal.
-p--pidSpecify a custom pid file path, such as 'controller/run/default.pid'.
-s--settingsSpecify a custom settings path, such as 'controller/'.
-S--simulateRun as a simulation.
-k--socketSpecify a custom socket file path, such as 'controller/run/default.socket'.
-U--uninterruptibleDesignate that this program cannot be interrupted by a signal.
-v--validateValidate the settings (entry and rules) without running (does not simulate).
+
+

+ When both the --simulate parameter and the --validate parameter are specified, then additional information on each would be executed rule is printed but no simulation is performed. +

+

+ The default interrupt behavior is to operate as if the --interruptible parameter is passed. +

+

+ Specify an empty string for the --pid parameter to disable pid file creation for this program. +

+
+
+
+
+
+ + diff --git a/documentation/fake.html b/documentation/fake.html new file mode 100644 index 0000000..c87caa8 --- /dev/null +++ b/documentation/fake.html @@ -0,0 +1,329 @@ + + + + Documentation - Featureless Make + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+

Featureless Make Documentation

+
+ +
+
+

About

+
+
+

+ The fake program, also called Featureless Make is the flagship program of the FLL project and provides the ability to compile source code and perform various actions not unlike how the GNU Make program operates. +

+

+ This tools is directly intended to be a replacement to the GNU Make program but not as a replacement for all of the GNU Make functionality. Instead, the fake program follows the ideoligy that a build program should not involve itself with system-specific behavior, such as installing to a system. +

+

+ Despite this non-standard ideology, the fake program is flexible enough to be used as an installer. In fact, this tool is used to not only build the entire FLL but it can also compile and run unit tests for the project. +

+

+ A bootstrap script is provided in all FLL projects that operates with almost complete one-to-one functionality to this tool to allow for the system to build itself. A great example of this is the test script used to run unit tests on services like Github where this project must compile itself and then use itself to run unit tests against itself. +

+

+ While most of the programs provided with the FLL are young and not well tested, the fake program is considered mature. +

+

+ There are two primary operations in which this tool executes: +

+
    +
  1. The build operation.
  2. +
  3. The make operation.
  4. +
+

+ The build mode is derived from the idea that most of the compilation process is redundant and can be simplified to a pre-define set of configuration settings. This reduces the amount of efforted needed to write and mainting a build system at the cost of flexibility. +

+

+ The make mode is the mode for operating as a replacement to the GNU Make program. This provides scriptable ways to perform just about any task needed when building a system. Many of the build mode settings are available (but are not required) and this mode can even call the build mode itself. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-d--defineAppend an additional define after defines from settings file.
-f--fakefileUse this fakefile.
-m--modeUse this mode when processing the build settings.
-p--processProcess name for storing build states.
-s--settingsUse this settings file.
-b--buildSpecify a custom build directory.
-D--dataSpecify a custom path to the data files.
-S--sourcesSpecify a custom path to the source files.
-w--workUse includes/libraries/programs from this directory instead of system.
+
+

+ When using the -d/--define parameter the define structure must be passed as-is and may even need to be quoted if there is whitespace. +

+

+ For example, in the C programming, passing a macro to the compiler might look like '-DMY_MACRO=1'. To do this using -d/--define, there would be two parameters passed like this: '-d -DMY_MACRO=1'. This works because the parameter after the -d/--define is not interpreted and is treated exactly as is without interpreting it as a parameter to the fake program. +

+

+ Because of this, passing '-d -h' would not print the program help because the '-h' is considered a value associated with the '-d' parameter rather than a parameter itself. +

+
+
+ +
+
+

Operations

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
OperationDescription
buildBuild or compile the code based on build settings file.
cleanDelete all build files.
makeBuild or compile the code based on fakefile.
skeletonBuild a skeleton directory structure.
+
+

+ When performing the build operation, the --mode parameter specifies a name (limited to alpha-numeric, underscore, and dash) to be used in addition to the global. +

+

+ For example, when a mode of 'fll_monolithic' is specified, build libraries from both 'build_libraries' and 'build_libraries-fll_monolithic' are used (but not 'build_libraries-fll_level'). +

+

+ When specifying the fakefile or the settings parameters, the filenames are relative to the data build directory, unless a path is used. +

+

+ For example, with '--fakefile my_fakefile' the fakefile at './data/build/my_fakefile' would be used, however with '--fakefile ./my_fakefile' the fakefile at './my_fakefile' would be used. +

+
+
+
+
+
+ + diff --git a/documentation/firewall.html b/documentation/firewall.html new file mode 100644 index 0000000..66e9f94 --- /dev/null +++ b/documentation/firewall.html @@ -0,0 +1,223 @@ + + + + Documentation - Firewall + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Firewall Documentation

+
+ +
+
+

About

+
+
+

+ The firewall program is a tool for simplifying and automating the iptables program. +

+

+ This tool is set to be replaced now that both the firewall and the iptables programs are outdated. The latest iptables program replacement (the nftables program) is superior and the firewall will need major rewrites to utilize the replacement. +

+

+ This tools is one of the original two programs of the FLL project and is designed to be a fully functional proof of concept for the FLL project. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Commands

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CommandDescription
startTurn on the firewall.
stopTurn off the firewall.
restartTurn off and then turn on the firewall.
lockPrevent all communication.
showShow active firewall settings.
+
+
+
+
+
+
+ + diff --git a/documentation/fss_basic_list_read.html b/documentation/fss_basic_list_read.html new file mode 100644 index 0000000..6ae36dc --- /dev/null +++ b/documentation/fss_basic_list_read.html @@ -0,0 +1,374 @@ + + + + Documentation - FSS Basic List Read + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+

FSS Basic List Read Documentation

+
+ +
+
+

About

+
+
+

+ The fss_basic_list_read program is a tool for reading and processing strings that follow the FSS-0002 (Basic List) standard. +

+

+ This tool is designed to be scriptable and accepts piped input, treating the piped input as a file being read. +

+

+ This tool shares parameters between with the other FSS Read and Write programs to make scripting consistent across the FSS Read and Write programs even if any given program neither needs nor uses the parameter. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-a--atSelect Object at this numeric index.
-c--contentPrint the Content (default).
-C--columnsPrint the total number of columns.
-D--delimitDesignate how to handle applying delimits.
-d--depthSelect Object at this numeric depth.
-e--emptyInclude empty Content when processing.
-l--linePrint only the Content at the given line.
-n--nameSelect Object with this name.
-o--objectPrint the Object.
-p--pipePrint using the special pipe format.
-R--rawPrint with the original quotes and escapes.
-s--selectSelect sub-Content at this index.
-t--totalPrint the total number of lines.
-T--trimTrim Object names on select or print.
+
+

+ All numeric positions (indexes) start at 0 instead of 1. +

+

+ For example, a file of 17 lines would range from 0 to 16. +

+

+ When using the --depth option, an order of operations is enforced on the parameters. +

+

+ When this order of operations is in effect, parameters to the right of a depth parameter are influenced by that depth parameter: +

+
+
+
--at
An Object index at the specified depth.
+
+
+
--depth
A new depth within the specified depth, indexed from the root.
+
+
+
--name
An Object name at the specified depth.
+
+
+

+ The parameter --depth must be in numeric order, but values in between may be skipped. +

+
    +
  • ('-d 0 -a 1 -d 2 -a 2' would specify index 1 at depth 0, any index at depth 1, and index 2 at depth 2.)
  • +
  • ('-d 2 -a 1 -d 0 -a 2' would be invalid because depth 2 is before depth 1.)
  • +
+

+ The parameter --select selects a Content column. +

+

+ Specify both --object and the --total parameters to get the total objects. +

+

+ When both --at and --name parameters are specified (at the same depth), the --at parameter value will be treated as a position relative to the specified --name parameter value. +

+

+ This program may support parameters, such as --depth or --select, even if not supported by the standard. +

+

+ This is done to help ensure consistency for scripting. +

+

+ For parameters like --depth, if the standard doesn't support nested Content, then only a depth of 0 would be valid. +

+

+ For parameters like --select, if the standard doesn't support multiple Content groups, then only a select of 0 would be valid. +

+

+ The parameter --trim will remove leading and trailing white spaces when selecting objects or when printing objects. +

+

+ When specifying both the --object parameter and the --content parameter, the entire Object and Content are printed, including the formatting. +

+

+ Both the Object and Content printed are already escaped. +

+

+ Both the Object and Content are separated by a New Line character '\n' (U+000A). +

+

+ The parameter --delimit accepts the following: +

+
+
+
none
Do not apply delimits.
+
+
+
all
(default) Apply all delimits.
+
+
+
object
Apply delimits for Objects.
+
+
+
A number, 0 or greater
apply delimits for Content at the specified depth.
+
+
+
A number, 0 or greater, followed by a +
(such as '1+') apply delimits for Content at the specified depth and any greater depth (numerically).
+
+
+
A number, 0 or lesser, followed by a -
(such as '1-') apply delimits for Content at the specified depth and any lesser depth (numerically).
+
+
+

+ The --delimit parameter may be specified multiple times to customize the delimit behavior. +

+

+ The --delimit values none and all, overrule all other delimit values. +

+

+ The parameters --columns and --select refer to a Content column. +

+

+ The word "column" is being loosely defined to refer to a specific Content. +

+

+ This is not to be confused with a depth. +

+
+
+
+
+
+ + diff --git a/documentation/fss_basic_list_write.html b/documentation/fss_basic_list_write.html new file mode 100644 index 0000000..eeb5fd0 --- /dev/null +++ b/documentation/fss_basic_list_write.html @@ -0,0 +1,270 @@ + + + + Documentation - FSS Basic List Write + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

FSS Basic List Write Documentation

+
+ +
+
+

About

+
+
+

+ The fss_basic_list_write program is a tool for generating strings that follow the FSS-0002 (Basic List) standard. +

+

+ This tool is designed to be scriptable and accepts piped input using a special format. +

+

+ This tool shares parameters between with the other FSS Read and Write programs to make scripting consistent across the FSS Read and Write programs even if any given program neither needs nor uses the parameter. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-f--fileSpecify a file to send data to.
-c--contentThe Content to write.
-I--ignoreIgnore a given range within a Content.
-d--doubleUse double quotes (default).
-o--objectThe Object to write.
-p--partialDo not file end of Object/Content character.
-P--prependPrepend the given white space characters to the start of each multi-line Content.
-s--singleUse single quotes.
-T--trimTrim Object names.
+
+

+ This special piped input format uses the ASCII Backspace character '\b' (U+0008), Form Feed character '\f' (U+000C), and Vertical Line character '\v' (U+000B). +

+

+ The Backspace character '\b' (U+0008) is used to designate the start of a Content. +

+

+ The Form Feed character '\f' (U+000C) is used to designate the end of the last Content. +

+

+ The Vertical Line character '\v' (U+000B) is used to ignore a Content range, which does nothing in this program. +

+

+ For the pipe, an Object is terminated by either a Backspace character '\b' (U+0008) or a Form Feed character '\f' (U+000C). The end of the pipe represents the end of any Object or Content. +

+

+ The FSS-0002 (Basic List) specification does not support quoted names, therefore the parameters --single and --double do nothing. +

+

+ This program does not use the parameter --ignore, which therefore does nothing. This parameter requires two values. +

+
+
+
+
+
+ + diff --git a/documentation/fss_basic_read.html b/documentation/fss_basic_read.html new file mode 100644 index 0000000..6a6cdf8 --- /dev/null +++ b/documentation/fss_basic_read.html @@ -0,0 +1,375 @@ + + + + Documentation - FSS Basic Read + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

FSS Basic Read Documentation

+
+ +
+
+

About

+
+
+

+ The fss_basic_read program is a tool for reading and processing strings that follow the FSS-0000 (Basic) standard. +

+

+ This tool is designed to be scriptable and accepts piped input, treating the piped input as a file being read. +

+

+ This tool shares parameters between with the other FSS Read and Write programs to make scripting consistent across the FSS Read and Write programs even if any given program neither needs nor uses the parameter. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-a--atSelect Object at this numeric index.
-c--contentPrint the Content (default).
-C--columnsPrint the total number of columns.
-D--delimitDesignate how to handle applying delimits.
-d--depthSelect Object at this numeric depth.
-e--emptyInclude empty Content when processing.
-l--linePrint only the Content at the given line.
-n--nameSelect Object with this name.
-o--objectPrint the Object.
-p--pipePrint using the special pipe format.
-R--rawPrint with the original quotes and escapes.
-s--selectSelect sub-Content at this index.
-t--totalPrint the total number of lines.
-T--trimTrim Object names on select or print.
+
+

+ All numeric positions (indexes) start at 0 instead of 1. +

+

+ For example, a file of 17 lines would range from 0 to 16. +

+

+ When using the --depth option, an order of operations is enforced on the parameters. +

+

+ When this order of operations is in effect, parameters to the right of a depth parameter are influenced by that depth parameter: +

+
+
+
--at
An Object index at the specified depth.
+
+
+
--depth
A new depth within the specified depth, indexed from the root.
+
+
+
--name
An Object name at the specified depth.
+
+
+

+ The parameter --depth must be in numeric order, but values in between may be skipped. +

+
    +
  • ('-d 0 -a 1 -d 2 -a 2' would specify index 1 at depth 0, any index at depth 1, and index 2 at depth 2.)
  • +
  • ('-d 2 -a 1 -d 0 -a 2' would be invalid because depth 2 is before depth 1.)
  • +
+

+ The parameter --select selects a Content column. +

+

+ Specify both --object and the --total parameters to get the total objects. +

+

+ When both --at and --name parameters are specified (at the same depth), the --at parameter value will be treated as a position relative to the specified --name parameter value. +

+

+ This program may support parameters, such as --depth or --select, even if not supported by the standard. +

+

+ This is done to help ensure consistency for scripting. +

+

+ For parameters like --depth, if the standard doesn't support nested Content, then only a depth of 0 would be valid. +

+

+ For parameters like --select, if the standard doesn't support multiple Content groups, then only a select of 0 would be valid. +

+

+ The parameter --trim will remove leading and trailing white spaces when selecting objects or when printing objects. +

+

+ When specifying both the --object parameter and the --content parameter, the entire Object and Content are printed, including the formatting. +

+

+ Both the Object and Content printed are already escaped. +

+

+ Both the Object and Content are separated by a space. +

+

+ The parameter --delimit accepts the following: +

+
+
+
none
Do not apply delimits.
+
+
+
all
(default) Apply all delimits.
+
+
+
object
Apply delimits for Objects.
+
+
+
A number, 0 or greater
apply delimits for Content at the specified depth.
+
+
+
A number, 0 or greater, followed by a +
(such as '1+') apply delimits for Content at the specified depth and any greater depth (numerically).
+
+
+
A number, 0 or lesser, followed by a -
(such as '1-') apply delimits for Content at the specified depth and any lesser depth (numerically).
+
+
+

+ The --delimit parameter may be specified multiple times to customize the delimit behavior. +

+

+ The --delimit values none and all, overrule all other delimit values. +

+

+ The parameters --columns and --select refer to a Content column. +

+

+ The word "column" is being loosely defined to refer to a specific Content. +

+

+ This is not to be confused with a depth. +

+
+
+
+
+
+ + diff --git a/documentation/fss_basic_write.html b/documentation/fss_basic_write.html new file mode 100644 index 0000000..ab48f1f --- /dev/null +++ b/documentation/fss_basic_write.html @@ -0,0 +1,270 @@ + + + + Documentation - FSS Basic Write + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

FSS Basic Write Documentation

+
+ +
+
+

About

+
+
+

+ The fss_basic_write program is a tool for generating strings that follow the FSS-0000 (Basic) standard. +

+

+ This tool is designed to be scriptable and accepts piped input using a special format. +

+

+ This tool shares parameters between with the other FSS Read and Write programs to make scripting consistent across the FSS Read and Write programs even if any given program neither needs nor uses the parameter. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-f--fileSpecify a file to send data to.
-c--contentThe Content to write.
-I--ignoreIgnore a given range within a Content.
-d--doubleUse double quotes (default).
-o--objectThe Object to write.
-p--partialDo not file end of Object/Content character.
-P--prependPrepend the given white space characters to the start of each multi-line Content.
-s--singleUse single quotes.
-T--trimTrim Object names.
+
+

+ This special piped input format uses the ASCII Backspace character '\b' (U+0008), Form Feed character '\f' (U+000C), and Vertical Line character '\v' (U+000B). +

+

+ The Backspace character '\b' (U+0008) is used to designate the start of a Content. +

+

+ The Form Feed character '\f' (U+000C) is used to designate the end of the last Content. +

+

+ The Vertical Line character '\v' (U+000B) is used to ignore a Content range, which does nothing in this program. +

+

+ For the pipe, an Object is terminated by either a Backspace character '\b' (U+0008) or a Form Feed character '\f' (U+000C). The end of the pipe represents the end of any Object or Content. +

+

+ The FSS-0000 (Basic) specification does not support multi-line Content, therefore the parameter --prepend does nothing. +

+

+ This program does not use the parameter --ignore, which therefore does nothing. This parameter requires two values. +

+
+
+
+
+
+ + diff --git a/documentation/fss_embedded_list_read.html b/documentation/fss_embedded_list_read.html new file mode 100644 index 0000000..a88c8db --- /dev/null +++ b/documentation/fss_embedded_list_read.html @@ -0,0 +1,375 @@ + + + + Documentation - FSS Embedded List Read + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

FSS Embedded List Read Documentation

+
+ +
+
+

About

+
+
+

+ The fss_embedded_list_read program is a tool for reading and processing strings that follow the FSS-0008 (Embedded List) standard. +

+

+ This tool is designed to be scriptable and accepts piped input, treating the piped input as a file being read. +

+

+ This tool shares parameters between with the other FSS Read and Write programs to make scripting consistent across the FSS Read and Write programs even if any given program neither needs nor uses the parameter. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-a--atSelect Object at this numeric index.
-c--contentPrint the Content (default).
-C--columnsPrint the total number of columns.
-D--delimitDesignate how to handle applying delimits.
-d--depthSelect Object at this numeric depth.
-e--emptyInclude empty Content when processing.
-l--linePrint only the Content at the given line.
-n--nameSelect Object with this name.
-o--objectPrint the Object.
-p--pipePrint using the special pipe format.
-R--rawPrint with the original quotes and escapes.
-s--selectSelect sub-Content at this index.
-t--totalPrint the total number of lines.
-T--trimTrim Object names on select or print.
+
+

+ All numeric positions (indexes) start at 0 instead of 1. +

+

+ For example, a file of 17 lines would range from 0 to 16. +

+

+ When using the --depth option, an order of operations is enforced on the parameters. +

+

+ When this order of operations is in effect, parameters to the right of a depth parameter are influenced by that depth parameter: +

+
+
+
--at
An Object index at the specified depth.
+
+
+
--depth
A new depth within the specified depth, indexed from the root.
+
+
+
--name
An Object name at the specified depth.
+
+
+

+ The parameter --depth must be in numeric order, but values in between may be skipped. +

+
    +
  • ('-d 0 -a 1 -d 2 -a 2' would specify index 1 at depth 0, any index at depth 1, and index 2 at depth 2.)
  • +
  • ('-d 2 -a 1 -d 0 -a 2' would be invalid because depth 2 is before depth 1.)
  • +
+

+ The parameter --select selects a Content column. +

+

+ Specify both --object and the --total parameters to get the total objects. +

+

+ When both --at and --name parameters are specified (at the same depth), the --at parameter value will be treated as a position relative to the specified --name parameter value. +

+

+ This program may support parameters, such as --depth or --select, even if not supported by the standard. +

+

+ This is done to help ensure consistency for scripting. +

+

+ For parameters like --depth, if the standard doesn't support nested Content, then only a depth of 0 would be valid. +

+

+ For parameters like --select, if the standard doesn't support multiple Content groups, then only a select of 0 would be valid. +

+

+ The parameter --trim will remove leading and trailing white spaces when selecting objects or when printing objects. +

+

+ When specifying both the --object parameter and the --content parameter, the entire Object and Content are printed, including the formatting. +

+

+ Both the Object and Content printed are already escaped. +

+

+ Both the Object and Content are separated by a New Line character '\n' (U+000A). +

+

+ The parameter --delimit accepts the following: +

+
+
+
none
Do not apply delimits.
+
+
+
all
(default) Apply all delimits.
+
+
+
object
Apply delimits for Objects.
+
+
+
A number, 0 or greater
apply delimits for Content at the specified depth.
+
+
+
A number, 0 or greater, followed by a +
(such as '1+') apply delimits for Content at the specified depth and any greater depth (numerically).
+
+
+
A number, 0 or lesser, followed by a -
(such as '1-') apply delimits for Content at the specified depth and any lesser depth (numerically).
+
+
+

+ The --delimit parameter may be specified multiple times to customize the delimit behavior. +

+

+ The --delimit values none and all, overrule all other delimit values. +

+

+ The parameters --columns and --select refer to a Content column. +

+

+ The word "column" is being loosely defined to refer to a specific Content. +

+

+ This is not to be confused with a depth. +

+
+
+
+
+
+ + diff --git a/documentation/fss_embedded_list_write.html b/documentation/fss_embedded_list_write.html new file mode 100644 index 0000000..755f73b --- /dev/null +++ b/documentation/fss_embedded_list_write.html @@ -0,0 +1,270 @@ + + + + Documentation - FSS Embedded List Write + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

FSS Embedded List Write Documentation

+
+ +
+
+

About

+
+
+

+ The fss_embedded_list_write program is a tool for generating strings that follow the FSS-0008 (Embedded List) standard. +

+

+ This tool is designed to be scriptable and accepts piped input using a special format. +

+

+ This tool shares parameters between with the other FSS Read and Write programs to make scripting consistent across the FSS Read and Write programs even if any given program neither needs nor uses the parameter. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-f--fileSpecify a file to send data to.
-c--contentThe Content to write.
-I--ignoreIgnore a given range within a Content.
-d--doubleUse double quotes (default).
-o--objectThe Object to write.
-p--partialDo not file end of Object/Content character.
-P--prependPrepend the given white space characters to the start of each multi-line Content.
-s--singleUse single quotes.
-T--trimTrim Object names.
+
+

+ This special piped input format uses the ASCII Backspace character '\b' (U+0008), Form Feed character '\f' (U+000C), and Vertical Line character '\v' (U+000B). +

+

+ The Backspace character '\b' (U+0008) is used to designate the start of a Content. +

+

+ The Form Feed character '\f' (U+000C) is used to designate the end of the last Content. +

+

+ The Vertical Line character '\v' (U+000B) is used to ignore a Content range, which does nothing in this program. +

+

+ For the pipe, an Object is terminated by either a Backspace character '\b' (U+0008) or a Form Feed character '\f' (U+000C). The end of the pipe represents the end of any Object or Content. +

+

+ The FSS-0008 (Embedded List) specification does not support quoted names, therefore the parameters --single and --double do nothing. +

+

+ This program uses the parameter --ignore, which designates to not escape any valid nested Object or Content within some Content. This parameter requires two values. This parameter is not used for ignoring anything from the input pipe. This parameter must be specified after a --content parameter and this applies only to the Content represented by that specific --content parameter. +

+
+
+
+
+
+ + diff --git a/documentation/fss_extended_list_read.html b/documentation/fss_extended_list_read.html new file mode 100644 index 0000000..8c5f4fc --- /dev/null +++ b/documentation/fss_extended_list_read.html @@ -0,0 +1,375 @@ + + + + Documentation - FSS Extended List Read + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

FSS Extended List Read Documentation

+
+ +
+
+

About

+
+
+

+ The fss_extended_list_read program is a tool for reading and processing strings that follow the FSS-0003 (Extended List) standard. +

+

+ This tool is designed to be scriptable and accepts piped input, treating the piped input as a file being read. +

+

+ This tool shares parameters between with the other FSS Read and Write programs to make scripting consistent across the FSS Read and Write programs even if any given program neither needs nor uses the parameter. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-a--atSelect Object at this numeric index.
-c--contentPrint the Content (default).
-C--columnsPrint the total number of columns.
-D--delimitDesignate how to handle applying delimits.
-d--depthSelect Object at this numeric depth.
-e--emptyInclude empty Content when processing.
-l--linePrint only the Content at the given line.
-n--nameSelect Object with this name.
-o--objectPrint the Object.
-p--pipePrint using the special pipe format.
-R--rawPrint with the original quotes and escapes.
-s--selectSelect sub-Content at this index.
-t--totalPrint the total number of lines.
-T--trimTrim Object names on select or print.
+
+

+ All numeric positions (indexes) start at 0 instead of 1. +

+

+ For example, a file of 17 lines would range from 0 to 16. +

+

+ When using the --depth option, an order of operations is enforced on the parameters. +

+

+ When this order of operations is in effect, parameters to the right of a depth parameter are influenced by that depth parameter: +

+
+
+
--at
An Object index at the specified depth.
+
+
+
--depth
A new depth within the specified depth, indexed from the root.
+
+
+
--name
An Object name at the specified depth.
+
+
+

+ The parameter --depth must be in numeric order, but values in between may be skipped. +

+
    +
  • ('-d 0 -a 1 -d 2 -a 2' would specify index 1 at depth 0, any index at depth 1, and index 2 at depth 2.)
  • +
  • ('-d 2 -a 1 -d 0 -a 2' would be invalid because depth 2 is before depth 1.)
  • +
+

+ The parameter --select selects a Content column. +

+

+ Specify both --object and the --total parameters to get the total objects. +

+

+ When both --at and --name parameters are specified (at the same depth), the --at parameter value will be treated as a position relative to the specified --name parameter value. +

+

+ This program may support parameters, such as --depth or --select, even if not supported by the standard. +

+

+ This is done to help ensure consistency for scripting. +

+

+ For parameters like --depth, if the standard doesn't support nested Content, then only a depth of 0 would be valid. +

+

+ For parameters like --select, if the standard doesn't support multiple Content groups, then only a select of 0 would be valid. +

+

+ The parameter --trim will remove leading and trailing white spaces when selecting objects or when printing objects. +

+

+ When specifying both the --object parameter and the --content parameter, the entire Object and Content are printed, including the formatting. +

+

+ Both the Object and Content printed are already escaped. +

+

+ Both the Object and Content are separated by a New Line character '\n' (U+000A). +

+

+ The parameter --delimit accepts the following: +

+
+
+
none
Do not apply delimits.
+
+
+
all
(default) Apply all delimits.
+
+
+
object
Apply delimits for Objects.
+
+
+
A number, 0 or greater
apply delimits for Content at the specified depth.
+
+
+
A number, 0 or greater, followed by a +
(such as '1+') apply delimits for Content at the specified depth and any greater depth (numerically).
+
+
+
A number, 0 or lesser, followed by a -
(such as '1-') apply delimits for Content at the specified depth and any lesser depth (numerically).
+
+
+

+ The --delimit parameter may be specified multiple times to customize the delimit behavior. +

+

+ The --delimit values none and all, overrule all other delimit values. +

+

+ The parameters --columns and --select refer to a Content column. +

+

+ The word "column" is being loosely defined to refer to a specific Content. +

+

+ This is not to be confused with a depth. +

+
+
+
+
+
+ + diff --git a/documentation/fss_extended_list_write.html b/documentation/fss_extended_list_write.html new file mode 100644 index 0000000..4b765db --- /dev/null +++ b/documentation/fss_extended_list_write.html @@ -0,0 +1,271 @@ + + + + Documentation - FSS Extended List Write + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

FSS Extended List Write Documentation

+
+ +
+
+

About

+
+ +
+

+ The fss_extended_list_write program is a tool for generating strings that follow the FSS-0003 (Extended List) standard. +

+

+ This tool is designed to be scriptable and accepts piped input using a special format. +

+

+ This tool shares parameters between with the other FSS Read and Write programs to make scripting consistent across the FSS Read and Write programs even if any given program neither needs nor uses the parameter. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-f--fileSpecify a file to send data to.
-c--contentThe Content to write.
-I--ignoreIgnore a given range within a Content.
-d--doubleUse double quotes (default).
-o--objectThe Object to write.
-p--partialDo not file end of Object/Content character.
-P--prependPrepend the given white space characters to the start of each multi-line Content.
-s--singleUse single quotes.
-T--trimTrim Object names.
+
+

+ This special piped input format uses the ASCII Backspace character '\b' (U+0008), Form Feed character '\f' (U+000C), and Vertical Line character '\v' (U+000B). +

+

+ The Backspace character '\b' (U+0008) is used to designate the start of a Content. +

+

+ The Form Feed character '\f' (U+000C) is used to designate the end of the last Content. +

+

+ The Vertical Line character '\v' (U+000B) is used to ignore a Content range, which does nothing in this program. +

+

+ For the pipe, an Object is terminated by either a Backspace character '\b' (U+0008) or a Form Feed character '\f' (U+000C). The end of the pipe represents the end of any Object or Content. +

+

+ The FSS-0003 (Extended List) specification does not support quoted names, therefore the parameters --single and --double do nothing. +

+

+ This program uses the parameter --ignore, which designates to not escape any valid nested Object or Content within some Content. This parameter requires two values. This parameter is not used for ignoring anything from the input pipe. This parameter must be specified after a --content parameter and this applies only to the Content represented by that specific --content parameter. +

+
+
+
+
+
+ + diff --git a/documentation/fss_extended_read.html b/documentation/fss_extended_read.html new file mode 100644 index 0000000..01ba7f4 --- /dev/null +++ b/documentation/fss_extended_read.html @@ -0,0 +1,377 @@ + + + + Documentation - FSS Extended Read + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

FSS Extended Read Documentation

+
+ +
+
+

About

+
+ +
+

+ The fss_extended_read program is a tool for reading and processing strings that follow the FSS-0001 (Extended) standard. +

+

+ This tool is designed to be scriptable and accepts piped input, treating the piped input as a file being read. +

+

+ This tool shares parameters between with the other FSS Read and Write programs to make scripting consistent across the FSS Read and Write programs even if any given program neither needs nor uses the parameter. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-a--atSelect Object at this numeric index.
-c--contentPrint the Content (default).
-C--columnsPrint the total number of columns.
-D--delimitDesignate how to handle applying delimits.
-d--depthSelect Object at this numeric depth.
-e--emptyInclude empty Content when processing.
-l--linePrint only the Content at the given line.
-n--nameSelect Object with this name.
-o--objectPrint the Object.
-p--pipePrint using the special pipe format.
-R--rawPrint with the original quotes and escapes.
-s--selectSelect sub-Content at this index.
-t--totalPrint the total number of lines.
-T--trimTrim Object names on select or print.
+
+

+ All numeric positions (indexes) start at 0 instead of 1. +

+

+ For example, a file of 17 lines would range from 0 to 16. +

+

+ When using the --depth option, an order of operations is enforced on the parameters. +

+

+ When this order of operations is in effect, parameters to the right of a depth parameter are influenced by that depth parameter: +

+
+
+
--at
An Object index at the specified depth.
+
+
+
--depth
A new depth within the specified depth, indexed from the root.
+
+
+
--name
An Object name at the specified depth.
+
+
+
+

+ The parameter --depth must be in numeric order, but values in between may be skipped. +

+
    +
  • ('-d 0 -a 1 -d 2 -a 2' would specify index 1 at depth 0, any index at depth 1, and index 2 at depth 2.)
  • +
  • ('-d 2 -a 1 -d 0 -a 2' would be invalid because depth 2 is before depth 1.)
  • +
+

+ The parameter --select selects a Content column. +

+

+ Specify both --object and the --total parameters to get the total objects. +

+

+ When both --at and --name parameters are specified (at the same depth), the --at parameter value will be treated as a position relative to the specified --name parameter value. +

+

+ This program may support parameters, such as --depth or --select, even if not supported by the standard. +

+

+ This is done to help ensure consistency for scripting. +

+

+ For parameters like --depth, if the standard doesn't support nested Content, then only a depth of 0 would be valid. +

+

+ For parameters like --select, if the standard doesn't support multiple Content groups, then only a select of 0 would be valid. +

+

+ The parameter --trim will remove leading and trailing white spaces when selecting objects or when printing objects. +

+

+ When specifying both the --object parameter and the --content parameter, the entire Object and Content are printed, including the formatting. +

+

+ Both the Object and Content printed are already escaped. +

+

+ Both the Object and Content are separated by a space. +

+

+ The parameter --delimit accepts the following: +

+
+
+
none
Do not apply delimits.
+
+
+
all
(default) Apply all delimits.
+
+
+
object
Apply delimits for Objects.
+
+
+
A number, 0 or greater
apply delimits for Content at the specified depth.
+
+
+
A number, 0 or greater, followed by a +
(such as '1+') apply delimits for Content at the specified depth and any greater depth (numerically).
+
+
+
A number, 0 or lesser, followed by a -
(such as '1-') apply delimits for Content at the specified depth and any lesser depth (numerically).
+
+
+

+ The --delimit parameter may be specified multiple times to customize the delimit behavior. +

+

+ The --delimit values none and all, overrule all other delimit values. +

+

+ The parameters --columns and --select refer to a Content column. +

+

+ The word "column" is being loosely defined to refer to a specific Content. +

+

+ This is not to be confused with a depth. +

+
+
+
+
+
+ + diff --git a/documentation/fss_extended_write.html b/documentation/fss_extended_write.html new file mode 100644 index 0000000..9771228 --- /dev/null +++ b/documentation/fss_extended_write.html @@ -0,0 +1,269 @@ + + + + Documentation - FSS Extended Write + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+

FSS Extended Write Documentation

+
+ +
+
+

About

+
+
+

+ The fss_extended_write program is a tool for generating strings that follow the FSS-0001 (Extended) standard. +

+

+ This tool is designed to be scriptable and accepts piped input using a special format. +

+

+ This tool shares parameters between with the other FSS Read and Write programs to make scripting consistent across the FSS Read and Write programs even if any given program neither needs nor uses the parameter. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-f--fileSpecify a file to send data to.
-c--contentThe Content to write.
-I--ignoreIgnore a given range within a Content.
-d--doubleUse double quotes (default).
-o--objectThe Object to write.
-p--partialDo not file end of Object/Content character.
-P--prependPrepend the given white space characters to the start of each multi-line Content.
-s--singleUse single quotes.
-T--trimTrim Object names.
+
+

+ This special piped input format uses the ASCII Backspace character '\b' (U+0008), Form Feed character '\f' (U+000C), and Vertical Line character '\v' (U+000B). +

+

+ The Backspace character '\b' (U+0008) is used to designate the start of a Content. +

+

+ The Form Feed character '\f' (U+000C) is used to designate the end of the last Content. +

+

+ The Vertical Line character '\v' (U+000B) is used to ignore a Content range, which does nothing in this program. +

+

+ For the pipe, an Object is terminated by either a Backspace character '\b' (U+0008) or a Form Feed character '\f' (U+000C). The end of the pipe represents the end of any Object or Content. +

+

+ The FSS-0001 (Extended) specification does not support multi-line Content, therefore the parameter --prepend does nothing. +

+

+ This program does not use the parameter --ignore, which therefore does nothing. This parameter requires two values. +

+
+
+
+
+
+ + diff --git a/documentation/fss_identify.html b/documentation/fss_identify.html new file mode 100644 index 0000000..7b5021e --- /dev/null +++ b/documentation/fss_identify.html @@ -0,0 +1,241 @@ + + + + Documentation - FSS Identify + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

FSS Identify Documentation

+
+ +
+
+

About

+
+
+

+ The fss_identify program is a tool for processing strings in an attempt to identify the FSS file format based on FSS header comments. +

+

+ This program doesn't perforrm any special heuristic. It only checks for the special FSS header and reports what it finds. +

+

+ This tool is designed to be scriptable but does not accept piped input. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-c--contentPrint the Identifier content (the 4-digit hexidecimal type code).
-o--objectPrint the Identifier object (the name).
-l--linePrint only the Identifier at the given line.
-n--nameSelect FSS using this full or partial type name or code.
-t--totalPrint the total Identifiers found.
+
+

+ The --line parameter refers to the file lines and not the lines in a given file. +

+

+ If neither the --object nor --content are specified, then the default behavior is to print both. +

+

+ When specifying the --total parameter, neither the --object nor the --content parameter may be specified. +

+

+ An FSS file is identified by the format "# Object-Content" where the Object, is a machine-name representing the name and may only consist of "word" characters and the Content is a 4-digit hexidecimal number representing a particular variant of the Object. This identifier, if provided, must exist on the first line in a file and must begin with the pound character: "#". White space must follow this pound character. There may be multiple Object and Content pairs, separated by white space, such as: "# fss-0002 fss-0000 iki-0002". +

+
+
+
+
+
+ + diff --git a/documentation/fss_payload_read.html b/documentation/fss_payload_read.html new file mode 100644 index 0000000..5d92494 --- /dev/null +++ b/documentation/fss_payload_read.html @@ -0,0 +1,385 @@ + + + + Documentation - FSS Payload Read + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

FSS Payload Read Documentation

+
+ +
+
+

About

+
+ +
+

+ The fss_payload_read program is a tool for reading and processing strings that follow the FSS-000E (Payload) standard. +

+

+ This tool is designed to be scriptable and accepts piped input, treating the piped input as a file being read. +

+

+ This tool shares parameters between with the other FSS Read and Write programs to make scripting consistent across the FSS Read and Write programs even if any given program neither needs nor uses the parameter. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-a--atSelect Object at this numeric index.
-c--contentPrint the Content (default).
-C--columnsPrint the total number of columns.
-D--delimitDesignate how to handle applying delimits.
-d--depthSelect Object at this numeric depth.
-e--emptyInclude empty Content when processing.
-l--linePrint only the Content at the given line.
-n--nameSelect Object with this name.
-o--objectPrint the Object.
-p--pipePrint using the special pipe format.
-R--rawPrint with the original quotes and escapes.
-s--selectSelect sub-Content at this index.
-t--totalPrint the total number of lines.
-T--trimTrim Object names on select or print.
+
+

+ All numeric positions (indexes) start at 0 instead of 1. +

+

+ For example, a file of 17 lines would range from 0 to 16. +

+

+ When using the --depth option, an order of operations is enforced on the parameters. +

+

+ When this order of operations is in effect, parameters to the right of a depth parameter are influenced by that depth parameter: +

+
+
+
--at
An Object index at the specified depth.
+
+
+
--depth
A new depth within the specified depth, indexed from the root.
+
+
+
--name
An Object name at the specified depth.
+
+
+

+ The parameter --depth must be in numeric order, but values in between may be skipped. +

+
    +
  • ('-d 0 -a 1 -d 2 -a 2' would specify index 1 at depth 0, any index at depth 1, and index 2 at depth 2.)
  • +
  • ('-d 2 -a 1 -d 0 -a 2' would be invalid because depth 2 is before depth 1.)
  • +
+

+ The parameter --select selects a Content column. +

+

+ Specify both --object and the --total parameters to get the total objects. +

+

+ When both --at and --name parameters are specified (at the same depth), the --at parameter value will be treated as a position relative to the specified --name parameter value. +

+

+ This program may support parameters, such as --depth or --select, even if not supported by the standard. +

+

+ This is done to help ensure consistency for scripting. +

+

+ For parameters like --depth, if the standard doesn't support nested Content, then only a depth of 0 would be valid. +

+

+ For parameters like --select, if the standard doesn't support multiple Content groups, then only a select of 0 would be valid. +

+

+ The parameter --trim will remove leading and trailing white spaces when selecting objects or when printing objects. +

+

+ When specifying both the --object parameter and the --content parameter, the entire Object and Content are printed, including the formatting. +

+

+ Both the Object and Content printed are already escaped. +

+

+ Both the Object and Content are separated by a New Line character '\n' (U+000A). +

+

+ The parameter --delimit accepts the following: +

+
+
+
none
Do not apply delimits.
+
+
+
all
(default) Apply all delimits.
+
+
+
object
Apply delimits for Objects.
+
+
+
A number, 0 or greater
apply delimits for Content at the specified depth.
+
+
+
A number, 0 or greater, followed by a +
(such as '1+') apply delimits for Content at the specified depth and any greater depth (numerically).
+
+
+
A number, 0 or lesser, followed by a -
(such as '1-') apply delimits for Content at the specified depth and any lesser depth (numerically).
+
+
+

+ The --delimit parameter may be specified multiple times to customize the delimit behavior. +

+

+ The --delimit values none and all, overrule all other delimit values. +

+

+ The parameters --columns and --select refer to a Content column. +

+

+ The word "column" is being loosely defined to refer to a specific Content. +

+

+ This is not to be confused with a depth. +

+

+ As an exceptional case, a --depth of 1 applies only to the explicit Object of "header". +

+

+ Content at this depth is processed as FSS-0001 (Extended). +

+

+ The Content of the explicit Object of 'payload' will not contain any Content close pipe control codes when using --pipe. +

+
+
+
+
+
+ + diff --git a/documentation/fss_payload_write.html b/documentation/fss_payload_write.html new file mode 100644 index 0000000..21b2d06 --- /dev/null +++ b/documentation/fss_payload_write.html @@ -0,0 +1,270 @@ + + + + Documentation - FSS Payload Write + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

FSS Payload Write Documentation

+
+ +
+
+

About

+
+
+

+ The fss_payload_write program is a tool for generating strings that follow the FSS-000E (Payload) standard. +

+

+ This tool is designed to be scriptable and accepts piped input using a special format. +

+

+ This tool shares parameters between with the other FSS Read and Write programs to make scripting consistent across the FSS Read and Write programs even if any given program neither needs nor uses the parameter. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-f--fileSpecify a file to send data to.
-c--contentThe Content to write.
-I--ignoreIgnore a given range within a Content.
-d--doubleUse double quotes (default).
-o--objectThe Object to write.
-p--partialDo not file end of Object/Content character.
-P--prependPrepend the given white space characters to the start of each multi-line Content.
-s--singleUse single quotes.
-T--trimTrim Object names.
+
+

+ This special piped input format uses the ASCII Backspace character '\b' (U+0008), Form Feed character '\f' (U+000C), and Vertical Line character '\v' (U+000B). +

+

+ The Backspace character '\b' (U+0008) is used to designate the start of a Content. +

+

+ The Form Feed character '\f' (U+000C) is used to designate the end of the last Content. +

+

+ The Vertical Line character '\v' (U+000B) is used to ignore a Content range, which does nothing in this program. +

+

+ For the pipe, an Object is terminated by either a Backspace character '\b' (U+0008) or a Form Feed character '\f' (U+000C). The end of the pipe represents the end of any Object or Content. +

+

+ The FSS-000E (Payload) specification does not support quoted names, therefore the parameters --single and --double do nothing. +

+

+ This program does not use the parameter --ignore, which therefore does nothing. This parameter requires two values. +

+
+
+
+
+
+ + diff --git a/documentation/fss_status_code.html b/documentation/fss_status_code.html new file mode 100644 index 0000000..ca6d66f --- /dev/null +++ b/documentation/fss_status_code.html @@ -0,0 +1,221 @@ + + + + Documentation - FSS Status Code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

FSS Status Code Documentation

+
+ +
+
+

About

+
+
+

+ The fss_status_code program is a tool for interpretting and changing the status codes received from programs into code words or vice-versa. This is intended to be easily scriptable. The code words are still machine-friendly and scriptable. +

+

+ This program handles standard FLL status codes as well as FSS status codes. The max status code supported is represented by the code words F_fss_status_code_last. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-f--finePrint F_true or F_false if status code is neither an error nor a warning or print number with neither the error code nor the warning code bits set.
-w--warningPrint F_true or F_false if status code is a warning or print number with warning code bit set.
-e--errorPrint F_true or F_false if status code is an error or print number with error code bit set.
-n--numberConvert status code name to number.
+
+
+
+
+
+
+ + diff --git a/documentation/iki_read.html b/documentation/iki_read.html new file mode 100644 index 0000000..df08787 --- /dev/null +++ b/documentation/iki_read.html @@ -0,0 +1,270 @@ + + + + Documentation - IKI Read + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

IKI Read Documentation

+
+ +
+
+

About

+
+ +
+

+ The iki_read program is a tool for processing strings that follow the IKI standard, specifically IKI-0000 (Unrestricted). +

+

+ This tool is designed to be scriptable and accepts piped input. +

+

+ Different ways of interpreting and printing strings are available. +

+

+ The entire string can be printed, replacing all IKI Variables and even allowing for primitive substitution or only the IKI Variables (or their Content) can be printed. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-a--atSelect variable at this numeric index.
-l--linePrint only the variables at the given line within the file.
-n--nameSelect variables with this name.
-w--wholePrint all of the data instead of just the IKI variable data.
-c--contentPrint the variable content (default).
-L--literalPrint the entire variable (aka: object, content, and syntax).
-o--objectPrint the variable name (aka: object).
-t--totalPrint the total number of variables.
-s--substituteSubstitute the entire variable for the given name and content value with the given string.
+
+

+ This -s/--substitute option, requires 3 additional parameters: <vocabulary> <replace> <with>. +

+
+
+
vocabulary
The name of the vocabulary whose content is to be substituted.
+
+
+
replace
The content matching this exact string will be substituted.
+
+
+
with
The new string to use as the substitute.
+
+
+

+ The vocabulary and replacement are case-sensitive and must exactly match. +

+
+
+
+
+
+ + diff --git a/documentation/iki_write.html b/documentation/iki_write.html new file mode 100644 index 0000000..84ad383 --- /dev/null +++ b/documentation/iki_write.html @@ -0,0 +1,229 @@ + + + + Documentation - IKI Write + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

IKI Write Documentation

+
+ +
+
+

About

+
+ +
+

+ The iki_write program is a tool for generating strings that follow the IKI standard, specifically the IKI-0000 (Unrestricted) standard. +

+

+ This tool is designed to be scriptable and accepts piped input using a special format. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-f--fileSpecify a file to send data to.
-c--contentThe Content to write.
-d--doubleUse double quotes (default).
-o--objectThe Object to write.
-s--singleUse single quotes.
+
+

+ This special piped input format uses the ASCII form-feed character '\f' (U+000C) as a separator. +

+
+
+
+
+
+ + diff --git a/documentation/status_code.html b/documentation/status_code.html new file mode 100644 index 0000000..58cf981 --- /dev/null +++ b/documentation/status_code.html @@ -0,0 +1,222 @@ + + + + Documentation - Status Code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Status Code Documentation

+
+ +
+
+

About

+
+ +
+

+ The status_code program is a tool for interpretting and changing the status codes received from programs into code words or vice-versa. This is intended to be easily scriptable. The code words are still machine-friendly and scriptable. +

+

+ This tool only handles standard FLL status codes. The max status code supported is represented by the code words F_status_code_last. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-f--finePrint F_true or F_false if status code is neither an error nor a warning or print number with neither the error code nor the warning code bits set.
-w--warningPrint F_true or F_false if status code is a warning or print number with warning code bit set.
-e--errorPrint F_true or F_false if status code is an error or print number with error code bit set.
-n--numberConvert status code name to number.
+
+
+
+
+
+
+ + diff --git a/documentation/utf8.html b/documentation/utf8.html new file mode 100644 index 0000000..51fc023 --- /dev/null +++ b/documentation/utf8.html @@ -0,0 +1,283 @@ + + + + Documentation - UTF8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

UTF8 Documentation

+
+ +
+
+

About

+
+ +
+

+ The UTF8 program is a tool for converting from a UTF-8 byte code sequence to the Unicode code point. The byte code can also be referred to as the binary representation of the code even though the byte code is considered text. The term "byte code" here is used to refer to a sequence of bytes intended to represent something, which in this case is a Unicode character. The Unicode code point is the Unicode designation uniquely identifying that particular sequence. The Unicode code point persists across different Unicode encoding beyond UTF-8, such as UTF-16. +

+

+ The idea behind the UTF8 program is to provide the answer to the question of what some special UTF-8 character is or to provide a way to create the UTF-8 character given the Unicode code point. +

+

+ This tool is intended to be scriptable, should handle both piped data and files, and can convert entire files. +

+

+ In addition, this tool can be used to validate a given byte code or can be used to get the character width of some byte code or code point. +

+
+
+ +
+
+

Standard Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-h--helpPrint the help message.
+d++darkOutput using colors that show up better on dark backgrounds.
+l++lightOutput using colors that show up better on light backgrounds.
+n++no_colorDo not print using color.
+q++quietDecrease verbosity, silencing most output.
+n++normalSet verbosity to normal.
+V++verboseIncrease verbosity beyond normal output.
+D++debugEnable debugging, significantly increasing verbosity beyond normal output.
+v++versionPrint only the version number.
+
+

+ The +q/++quiet parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the utf8 program is to print the Unicode code point or the UTF-8 byte code. The +q/++quiet will not suppress this output. The new line printed at the end of the program, is however, not printed. The +q/++quiet is ideal for using in scripting to help guarantee more consistent and controlled output. +

+

+ The +n/++no_color simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance. +

+
+
+ +
+
+

Program Parameters

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShortLongDescription
-b--from_bytecodeThe expected input format is byte code (character data).
-c--from_codepointThe expected input format is code point (such as U+0000).
-f--from_fileUse the given file as the input source.
-B--to_bytecodeThe output format is bytecode (character data).
-C--to_codepointThe output format is codepoint (such as U+0000).
-O--to_combiningThe output format is to print whether or not character is combining or not.
-F--to_fileUse the given file as the output destination.
-W--to_widthThe output format is to print the width of a character (either 0, 1, or 2).
-H--headersPrint headers for each section (pipe, file, or parameter).
-S--separateSeparate characters by new lines (implied when printing headers).
-s--strip_invalidStrip invalid Unicode characters (do not print invalid sequences).
-v--verifyOnly perform verification of valid sequences.
+
+

+ This program establishes a pattern for some of the parameters. The parameters that represent a "from" use lower case short characters and the parameters that represent a "to" use upper case short characters. For short parameters that have both a "from" and a "to", they use the same character with their case being different. +

+

+ The default behavior is to assume the expected input is byte code from the command line to be output to the screen as codepoints. +

+

+ Multiple input sources are allowed but only a single output destination is allowed. +

+

+ When using the parameter --verify, no data is printed and 0 is returned if valid or 1 is returned if invalid. +

+

+ When using the parameter --to_combining with the parameter --to_width, the 'C' character is printed to represent the combining and the digits are used to represent widths. The combining characters should be considered 1-width by themselves or 0-width when combined. +

+
+
+
+
+
+ + diff --git a/documents/documentation/fll/cygwin.txt b/documents/documentation/fll/cygwin.txt new file mode 100644 index 0000000..c2ebf5c --- /dev/null +++ b/documents/documentation/fll/cygwin.txt @@ -0,0 +1,36 @@ +# fss-0002 + +Cygwin: + The following are a collection of informal notes on getting this to compile and run under Windows using Cygwin. + I may formalize this at a later point in time. + + I have tested and was able to successfully (statically) compile and run FLL+Byte Dump under Cygwin. + The resulting binary could be transfered to another machine and runs if the cygwin.dll is copied with it (placed along the byte_dump.exe). + + To compile the FLL, some functionality needs to be disabled. + Fortunately, FLL is specifically designed to be hackable so the process is easier than it might otherwise be. + + For a monolithic build, compiled statically, add the following to "defines" in the "data/build/settings" file (of the packaged source). + "-D_di_libcap_ -D_pthread_attr_unsupported_ -D_pthread_sigqueue_unsupported_ -D_di_compiler_attributes_ -DF_attribute_visibility_hidden_d -DF_attribute_visibility_internal_d -DF_attribute_visibility_protected_d -DF_attribute_visibility_public_d -DF_attribute_weak_d" + + Before packaging "data/build/settings", the build settings files are either found inside the individual projects or under the build directory at the root of the source repository. + + The file level_1/fl_control_group/c/control_group.c (for function fl_control_group_apply()) had to have the following changed from: + if (unshare(CLONE_NEWCGROUP) < 0) { + if (errno == EINVAL) return F_status_set_error(F_parameter); + if (errno == ENOMEM) return F_status_set_error(F_memory_not); + if (errno == ENOSPC) return F_status_set_error(F_space_not); + if (errno == EPERM) return F_status_set_error(F_prohibited); + + return F_status_set_error(F_failure); + } + to: + return F_status_set_error(F_supported_not); + + There may have been other things to disable that I forgot to document. + + I do not believe I had to make any changes to compile byte_dump. + + Compiling byte_dump statically against the FLL library is a bit inefficient in that it contains the entire FLL library. + The byte_dump program only needs a portion of it. + I may need to provide a list of everything that can be disabled to provide a smaller and more optimal byte_dump binary. diff --git a/documents/documentation/fll/debugging.txt b/documents/documentation/fll/debugging.txt new file mode 100644 index 0000000..182c985 --- /dev/null +++ b/documents/documentation/fll/debugging.txt @@ -0,0 +1,54 @@ +# fss-0002 + +Debugging: + There are various tools out there to assist in investigating for problems and debugging the compiled code. + This documentation briefly touches on a small set of these used by this project. + + The following are notable tools to consider when debugging\: + - strace + - gdb + - valgrind + - GCC's -fanalyzer (and CLang's equivalent) + - massif-visualizer + - valkyrie + +Valgrind: + The "valgrind" program has three important tools: + 1) The default tool, which is to check for memory leaks. + 2) The thread anyalzing tool called "helgrind". + 3) The heap usage analyzing tool called "massif". + + The default behavior shows memory leaks when run against a program (such as fake), a messages like the following are desired\: + - "in use at exit: 0 bytes in 0 blocks". + - "All heap blocks were freed -- no leaks are possible". + + The "..total heap usage" is just that a total heap usage throughout the lifespan of the program. + This does not represent the total usage at any moment in time (for that look into massif). + + Example execution\: + valgrind fake make + + The thread analyzing tool called "helgrind" is described in the "threads.txt" documentation given that it is thread-focused. + + The heap usage analyzing tool called "massif" is a helpful in identifying situations where the compiled code is using large amounts of memory. + A massif file is generated on exit and a good tool for visualizng this is called "massif-visualizer". + + Example execution\: + valgrind --tool=massif fake make + massif-visualizer massif.out.1234 + + A GUI that is helpful in using valgrind is called "valkyrie". + The "valkyrie" program does not support massif at the time of this writing but it eventually may. + The "valkyrie" program does support the default valgrind tool and the helgrind tools. + + When working with valgrind's massif tool, several libc functions (or other functions external to this project) may get in the way of the analysis. + These functions should be disabled. + Example valgrind massif execution disabling some common GLibc functions: + valgrind --tool=massif --ignore-fn=_IO_file_doallocate --ignore-fn=ftw_startup --ignore-fn=__alloc_dir fake clean build + +GCC's -fanalyzer (and CLang's equivalent): + The code analyzer provided by GCC (and also CLang, through similar means) attempts to determine insecure or otherwise bad coding practices. + + This focuses on the GCC -fanalzyer. + + The analzyer is easily enabled by just appending "-fanalyzer" to the "flags" in data/build/settings or directly passing "-fanalyzer" to the gcc command.o diff --git a/documents/documentation/fll/private_functions.txt b/documents/documentation/fll/private_functions.txt new file mode 100644 index 0000000..dfc5603 --- /dev/null +++ b/documents/documentation/fll/private_functions.txt @@ -0,0 +1,24 @@ +# fss-0002 + +Private Functions: + One of the objectives of this project is to make as much, if not all, of the functions available for use. + + Another of the objectives is to design each function to operate in isolation to another function. + There is some flexibility in regards to this when it comes to individual projects. + + Such a design has advantages and disadvantages. + + One of those disadvantages is possible redundant code. + The c-programming language does not have private functions by any normal means. + The use of the f_gcc_attribute_visibility_internal helps simulate private functions. + Such functionality only works in supporting GCC compilers. + + These synthetic private functions are implemented as an exception to the objectives for maintainability and redundancy purposes. + Such implementations should be kept to a bare minimum. + + Functions defined as private will not be normally exposed through the public headers files. + Such functions will be prefixed with 'private_'. + + The header files and source files for these private functions will be prefixed with "private-". + Normally, this product uses underscores for names, but, as a special name, the dash "-" is used. + Normally, the names begin with the project name (such as directory_type.h instead of type_directory.h), but as a special case to further separate private files, this is prefixed onto source files (such as private-directory.h). diff --git a/documents/documentation/fll/readme.txt b/documents/documentation/fll/readme.txt new file mode 100644 index 0000000..eb5a374 --- /dev/null +++ b/documents/documentation/fll/readme.txt @@ -0,0 +1,46 @@ +# fss-0002 +# +# This readme file is inteded to provide a basic introduction to the Featureless Linux Library (FLL). +# + +Installation: + The FLL provides two installation types\: + - The management scripts. + - The Featureless Make program. + + The management scripts provide a way to manage the source code, such as updating dependencies, constructing the souce code for release, and bootstrap compiling the system. + + The bootstrap compiling provides a way to build and compile the entire FLL project, without the Featureless Make (Fake) program. + This bootstrap process solves the problem where if you don't already have Fake installed, then you cannot install Fake. + These bootstrap scripts are written in GNU Bash. + + The source code needs to be packaged before it can be compiled by either the bootstrap scripts or by the Fake program. + + The Fake program is neither intended nor designed to be used as an installer, so the bootstrap scripts also provide an install script written in GNU Bash. + This install script is intended to be used only by the FLL. + Future versions of the FLL may include an install equivalent to the Fake program (and there may possibly be a package generation equivalent as well). + + The management scripts are as follows\: + - bootstrap.sh + - bootstrap-example.sh + - install.sh + - package.sh + + The bootstrap.sh script is intended to take the FLL source code and compile it into appropriate binaries on the system, particularly when the Fake program is not installed. + This is analogous to the GNU Make program and the FLL Fake program. + + The bootstrap-example.sh script is intended to be a functional example of the command line arguments that should be used to generate, compile, and install the entire FLL. + + The install.sh script is intended to install the built and compiled FLL code onto the system. + This script very loosely follows a small amount of the logic of the standard configure scripts. + + The package.sh script is intended to convert the FLL source code from the source code repository structure into a packaged or release. + Of particular note is that there are multiple ways to package the FLL, such as each package as its own individual project, each package by level, or each package as a monolithic library. + This script also provides management functions for ensuring the dependencies and configuration settings are accurate. + +Other Readmes: + Repository providers like Github and Gitlab utilize README.md, LICENSE, and other special files at the root project level. + This practice is not supported by the FLL project structure and is not normally used. + + Instead, these are provided only on special branches intended exclusively to be used for the appropriate repository provider. + These readmes and related files are intended to document the project within the scope of the repository provider and usually a particular release version. diff --git a/documents/documentation/fll/return_codes.txt b/documents/documentation/fll/return_codes.txt new file mode 100644 index 0000000..71a2a70 --- /dev/null +++ b/documents/documentation/fll/return_codes.txt @@ -0,0 +1,33 @@ +# fss-0002 + +Implicit Return Types for f_status_t: + When f_status_t is used as the return type, there are a common set of status codes that should always be expected as a possible return value. + These are implicit expectations even if they are not explicitly documented. + Any function that doesn't support these must document the exceptional state. + + F_failure\: + This may be returned for any general error. + This is often used as the failsafe error code so that an error code of some sort is always returned on error. + + F_parameter\: + This is always potentially returned for any function whose parameter requires a validity checked. + Much of this functionality can be optionally disabled, but the client using the API need not be aware. + + F_implemented_not\: + This is used to designate that the function or some part of the function is not supported. + This is primarily used by individuals altering the project but maintaing API compatibility. + Any function must therefore support returning F_implemented_not. + + There are some projects that can be enabled/disabled such as f_capability and f_threads. + These should explicitly document returning F_implemented_not. + +Common Return Types for f_status_t: + There are some f_status_t return types that are not required to be returned but are used quite often that they might seem required. + + F_none\: + This general designates that no error occurred. + This is a generic status code used all over the place. + + F_memory_not\: + This general designates that the operation ran out of memory. + This is a generic status code used all over the place. diff --git a/documents/documentation/fll/style_guide.txt b/documents/documentation/fll/style_guide.txt new file mode 100644 index 0000000..3987025 --- /dev/null +++ b/documents/documentation/fll/style_guide.txt @@ -0,0 +1,217 @@ +# fss-0002 + +Style Guide: + The Featureless Linux Library uses a set of styles and practices designed in hopes to communicate both explicitly and implicitly multiple meanings and contexts. + The idea is that code should be readable like a story rather than be a mash of characters jumbled together into as few lines as possible. + This design has a tendency to go against the norm given that longer lines (such as 120 characters or more) may be common. + + There are general style guides used in everything and there are more specific and context-explicit styles used in special cases. + +General Style Guides: + - Naming Structure. + - Commas in Sets. + - Loops and Newlines. + - Returns, Breaks, Continues, Gotos, and Newlines. + +Specific Style Guides: + - Return Code Names. + - Global String Constant Names. + - Enumeration Names. + - Define Names. + - Type Definition names. + - Function Names. + - File Names. + - Returns, Breaks, Continues, and Gotos Function Accessories. + +Naming Structure: + All files, programs, functions, and comments that have specific meaning follow this general naming structure. + This structure may be similar to camel-casing or snake-casing, but it is not nor is it intended to match them. + + These special names may only contain word characters, underscore "_", and dash "-". + + The underscore "_" and dash "-" are explicitly intended to communicate separation of context or not. + The underscore character represents a space separating multiple words, logic, concepts, or ideas represented by the previous words and should share meaning. + The dash character represents a break in the words, logic, concepts, or ideas. + + Limitations in the software may restrict the use of these and the following also apply\: + - In the event that a dash cannot be used, fall back to an underscore. + - In the event that an underscore cannot be used, fall back to a dash. + - In the event that both underscore and dash cannot be used, it is fine to have neither. + - For software that uses plus "+", it may become necessary to replace the dash with the plus, but this should be avoided. + - Other language-specific (compiler languages, spoken languages, written languages, etc..) restrictions may apply that prevent or alter this style. + + In general, these special names should always be lower case and this is encouraged. + The use of upper case is not forbidden and is encouraged to be used for special communication or language-specific purposes. + + Consider the following to better understand how and when to use the underscore and dash to implicitly communicate context\: + Take the words "my", "red", "cat", "dog", and "apple". + + If you wanted to communicate that the structure of a document is focused on "my red X", then you can use the following naming structure to communicate this\: + 1) my_red-cat, my_red-dog, my_red-apple. + + If you wanted, instead, to communicate that the structure is focused on "my X", then you can use the following naming structure to communicate this\: + 2) my-red_cat, my-red_dog, my-red_apple. + + By following this logic, another person can more easily identify your logic and make changes or fixes. + Let us say that somebody wants to add "happy" to the context\: + + 1) This can become: my_red-happy_cat, my_red-happy_dog, my_red-apple. + 2) This can become: my-happy_cat, my-happy_dog, my-red_apple. + + The person who added "happy" might have fixed a situation where there is no red cat or dog and while understanding that there is no happy apple. + However, in case (1) because "my_red" is grouped together by the underscore, it is clear that there is a "my_red" must be preserved and there is red cat and red dog, so happy is added to the cat and dog but not the apple without removing the "red". + +Commas in Sets: + In english, the more grammatically correct way to write lists is to have commas except for the last item in the set. + This makes hacking and patching more difficult, even if only slightly. + + This project requires that, so long as it is allowed by the language (in terms of valid syntax, etc..), items in a list must always end in a comma. + + Example Grammatically Correct Way\: + - char list[] = { + 'a', + 'b', + 'c' + }; + + Example FLL Correct Way\: + - char list[] = { + 'a', + 'b', + 'c', + }; + +Loops and Newlines: + All loops, except loops with only 0 or 1 lines within it, add an extra new line after the loop condition part (or before the loop condition part for post-increment loops). + + All pre-increment loops will have their loop type (such as "while", or "for") in a comment inline with the closing brace. + + A for loop would like like\: + for (int x = 0; x < y; ++x) { + + do_something(); + do_something_else(); + } // while + + A do while loop would like like\: + do { + do_something(); + do_something_else(); + + } while (true); + +Returns, Breaks, Continues, Gotos, and Newlines: + Operations that change the flow of a block or a function must have a newline before them, except in certain conditions. + This includes "return" statements, "break" statements, "continue" statements, and "goto" statements. + + Exceptions to this includes one line flow change operations directly tied to a function called before it. + These are meant to be treated as an accessory to the function. + + Any of these used in a switch statement to represent an action on a particular case is an exception to this rule. + + As an exception, this newline requirement may also be disregarded when combined with a set of one-line if, then, and else conditions. + +Return Code Names: + The return code names are C-language specific names used by this project as the status or return codes for functions and programs. + To uniquely identify these, they follow the naming structure "(A)_(b)", where "(A)" is replaced with an upper-case character representing the project level (or name) and "(b)" is replaced with the lower-case status code name using words that are underscore separated. + + These are enumerations but they do not follow the enumeration style guide and are an exception to it. + + Examples\: + - F_none + - F_signal_file_size_limit + +Global String Constant Names: + The C-language specific global names are used in two ways\: + 1) Via a define (macro). + 2) As a variable at the global scope. + + When used as a define, these follow the naming structure "(A)_(b)_s" or "(a)_(b)_s", where "(A)" is replaced with an upper-case character representing the project level, "(a)" is a lower-case alternative of "(A)" and "(b)" is replaced with the lower-case name using words that are underscore separated. + + When used as a variable these follow the naming structure "(a)_(b)_s", where "(a)" is replaced with an lower-case character representing the project level (or name) and "(b)" is replaced with the lower-case name using words that are underscore separated. + + The trailing "_s" designates that this is a string. + + In general, the defines are always using the upper-case variant and the variable are always using the lower-case. + This separation allows for a define and a variable to both exist simultaneously without naming conflict. + This is used extensively to define strings in this practice such that a define exists while a variable is provided. + + A special case define that describes the length of the string is of the forms: (A)_(b)_s_length or "(a)_(b)_s_length". + + Examples\: + - F_file_open_mode_truncate_s: as a define, such as: #define F_file_open_mode_truncate_s "w". + - f_file_open_mode_truncate_s: as a variable, such as: extern const f_string_t f_file_open_mode_truncate_s;. + - FAKE_build_setting_name_build_compiler_s: as a define. + - fake_build_setting_name_build_compiler_s: as a variable. + - fake_build_setting_name_build_compiler_s_length: for describing the length of the string represented by fake_build_setting_name_build_compiler_s. + +Enumeration Names: + The C-language specific enumeration names follow the naming structure "(b)_e", where "(b)" is replaced with the lower-case name using words that are underscore separated. + + The trailing "_e" designates that this is an enumeration. + + Examples\: + - f_console_verbosity_quiet_e + - f_fss_basic_e + - fss_extended_list_read_parameter_at_e + +Define Names: + The C-language specific define names (also known as macro names) follow the naming structure "(A)_(b)_d", where "(A)" is replaced with an upper-case character representing the project level and "(b)" is replaced with the lower-case name using words that are underscore separated. + + The trailing "_d" designates that this is a define (a macro). + + Examples\: + - F_file_mode_special_sticky_d + - F_attribute_visibility_internal_d + - FL_diectory_recurse_depth_max_d + +Type Definition names: + The C-language specific type definition names follow the naming structure "(a)_(b)_t", where "(a)" is replaced with an lower-case character representing the project level and "(b)" is replaced with the lower-case name using words that are underscore separated. + + The trailing "_t" designates that this is a type definition. + + In addition to the type definition, special defines (macros) are provided that are specific to type definitions are an exception to the Define Names rules. + - Each type definition should have an initializer and that initializer name follows the naming structure "(a)_(b)_t_initialize" where "_initialize" is appended to the type definition name. + + - Each type definition may have special defines (macros) used as functions for helping with special operations such as complex initialization, allocation, and deallocation. + These special case defines are an exception to the Define Name rules and follow the naming structure "macro_(a)_(b)_t_(c)" where "macro_" is prepended to the type definition name and the (c) is just like (b) but is used to communicate the special purpose. + + Examples\: + - f_string_static_t + - f_status_t + - macro_f_account_t_clear + - macro_f_string_dynamic_t_resize + +Function Names: + The C-language specific function names follow the naming structure "(a)_(b)" or "private_(a)_(b)", where "(a)" is replaced with an lower-case character representing the project level (or name) and "(b)" is replaced with the lower-case name using words that are underscore separated. + + The leading "private_" is used to designate that this is a private function. + + In addition, special practices are followed. + - For FLL projects, each project has a level. + Each project within some level is prepended to functions with their level representation characters of: "F" (level 0), "FL" (level 1), and "FLL" (level 2). + + - For programs, each program has a project name. + The program name, or a short alias of the program name, is prepended to functions. + + - For programs, the "main" function does not do this and is always called "main" without modification. + + Examples\: + - f_fss_basic_e + - fl_conversion_string_to_binary_signed + - fake_print_help + +File Names: + The C-language specific file names follow the naming structure "(c-)(b)(-c)" where "(b)" is replaced with the lower-case name using words that are underscore separated and "(c-)" and "(-c)" are just like "(b)" except there may be any number of these (or none at all) and the dash "-" is used to separate context as per the General Naming Structure. + + In addition, special practices are followed: + - private-(c-)(b)(-c): "private-" is prepended to all source and header files intended to be private (aka: not intended to be exposed via the API or ABI). + + - (c-)(b)(-c)-common: "-common" is appended to all files used as a common include for standard practice data such as global strings, define strings, type definitions, and memory allocation or deallocation functions. + +Returns, Breaks, Continues, and Gotos Function Accessories: + To avoid excessive newline spacing, certain one-line operations that are tightly coupled to a function are treated as an accessory to the function. + As an accessory to some function, these one-line operations must not have a line between them and the function that they are an accessory of unless there is an excessive amount. + + These function accessories are operations that change the flow of a block or a function. + This includes "return" statements, "break" statements, "continue" statements, and "goto" statements. diff --git a/documents/documentation/fll/threads.txt b/documents/documentation/fll/threads.txt new file mode 100644 index 0000000..b6c94e2 --- /dev/null +++ b/documents/documentation/fll/threads.txt @@ -0,0 +1,65 @@ +# fss-0002 + +Threads Documentation: + With the inclusion of the f_thread project, the Featureless Linux Library supports and uses threads by default. + This essentially adds -pthread to all level and monolithic builds with all projects depending on f_thread requiring passing -pthread. + + To compile without this thread support, remove all occurances of "-pthread" from each of the build settings files. + Be sure to remove f_thread project from the compile list as well (which can be found either in the individual projects build settings file or the appropriate level or monolithic build settings file). + + Any project or library depending on f_thread must have -pthread passed to guarantee a correct and valid compilation. + + Some projects that optionally support pthreads may support the macro _di_pthread_support_ for disabling threads. + + Thread support is a very common functionality and there may be changes to the FLL scripts and fakefile to support the options "--disable-thread" and "--enable-thread" to make utilizing threads slightly easier. + Some libraries and programs in this project require threads to work and will not compile with threads disabled. + +GLIBC Problems: + Some versions of GLIBC butcher static linking in some way or another. + One of the problems encountered is that with compiling against threads (-pthread) some programs may get messages like\: + multiple definition of `__lll_lock_wait_private' ... libpthread.a(lowlevellock.o): in function `__lll_unlock_wake_private' ... + + An immediate solution would be to fix the GLIBC and set __lll_lock_wait_private to a weak_function. + This is not practical for most users, so it may be that thread support in statically compiled libraries for GLIBC will not be possible. + An alternative could be to use a more sane libc instead of GLIBC (if you can find one, like musl-libc). + + There needs to be more investigation into the cause of this. + Maybe there is some way to fix this during compile or link time without having to fix GLIBC or use a different libc for static linking. + +Valgrind Debugging: + The tool "helgrind" in valgrind allows for debugging threads (such as valgrind --tool=helgrrind controller). + + The way in which the "active" lock is used will result in out of order locks. + This causes "helgrind" to produce a lot of warnings about locks being out of order. + Therefore, it is stongly recommended to use the parameter "--track-lockorders=no". + +Thread Cancellation Problems: + The POSIX standard designates thread cancellation via pthread_cancel() (which is provided via f_thread_cancel()). + This cancellation approach works such that when pthread_cancel() the thread is immediately terminated at a cancellation point. + The POSIX standard designates the detecting and acting on a cancellation point via pthread_testcancel() (which is provided via f_thread_cancel_test()). + + The pthread_testcancel() operates such that if pthread_cancel() was ever used for some thread with pthread_testcancel() that thread immediately exits. + There is no opportunity for the thread calling pthread_testcancel() to do any cleanup. + + The POSIX standard designates a way to perform exit tasks via pthread_cleanup_push() and pthread_cleanup_pop(). + These are allowed to be implemented as macros. + + The POSIX standard then provides a number of POSIX functions that must act as a cancellation point (essentially they call pthread_testcancel() at act as if they do). + + What all of this means is that the POSIX cancellation system is unusable, useless, and dangerous (except in a very restricted set of project designs). + + The Featureless Linux Library is designed to encourage everything to be functional and non-global. + The pthread_cleanup_push() and pthread_cleanup_pop() functions cannot be safely and reliable used because they not only may be macros but the Featureless Linux Library allows for the design to be in multiple scopes. + The pthread_testcancel() is incredibly dangerous and can very easily result in segmentation faults, memory leaks, dead locks, and other security concerns. + + The cancellation functions, such as sleep(), may require being either interrupted through an interrupt signal or be cancelled via pthread_testcancel(). + The pthread_testcancel() may need to be used in these cases. + + Therefore, avoid using any design or functions that may force or require the use of pthread_testcancel() but when forced to be very careful to clear up resources and locks to make sure that if a cancellation occurs that nothing bad can happen. + A better approach would be to use timed checks on some variable shared between all affected functions and scopes that designates cancellation. + That way when a cancellation is reseived through the custom variable, the functions can actually handle the situation, safely and properly, before cancelling. + +C/C++ Standard: + Newer C/C++ standards provide thread support. + This is ideally much better than POSIX in that it will be more portable. + At this time, most C/C++ compilers do not implement this thread support. diff --git a/documents/standards/fll/fss-0000.txt b/documents/standards/fll/fss-0000.txt new file mode 100644 index 0000000..252764f --- /dev/null +++ b/documents/standards/fll/fss-0000.txt @@ -0,0 +1,46 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Featureless Settings Specification: 0000 - Basic: + Each Object starts at the beginning of a line and whitespace to the left of the Object is not treated as part of the object. + Whitespace separates an Object from the Content. + An Object may be preceded by a newline, in which case means that the Object has no Content. + If only printing whitespace follows a valid Object, that Object is considered to have no Content. + + Content exists on the same line as the Object. + Content is represented as a single Content column terminated by a newline. + Content column consists of everything following the first non-whitespace character until the newline. + Content column includes trailing whitespace before newline is reached. + Content column does not include any of the leading whitespace. + No delimits are supported in the Content. + + Key\: + \s = whitespace, except newline. + \b = either whitespace or printable, except newline. + \q = non-whitespace or quoted whitespace with no whitespace outside of the quotes. + \n = newline. + * = zero or more occurrences. + + = one or more occurrences. + + Before Structure\: + + Structure\: + \s*\q+\s+\b*\n + + After Structure\: + + Example\: + # fss-0000 + # valid comments are ignored. + "The Object" Content until newline. + Second object set. + + Object would be\: + 1) The Object + 2) Second + + Content would be\: + 1.1) Content until newline. + 2.1) object set. diff --git a/documents/standards/fll/fss-0001.txt b/documents/standards/fll/fss-0001.txt new file mode 100644 index 0000000..e8086be --- /dev/null +++ b/documents/standards/fll/fss-0001.txt @@ -0,0 +1,49 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Featureless Settings Specification: 0001 - Extended: + Each Object starts at the beginning of a line and whitespace to the left of the Object is not treated as an object. + Whitespace separates an Object from the Content. + An Object may be followed by a newline, in which case means that the Object has no Content. + If only printing whitespace follows a valid Object, that Object is considered to have no Content. + + Content exists on the same line as the Object. + Content is represented as multiple Content columns. + Content columns are whitespace separated parts within the Content and terminated by a newline. + Any number of Content columns may exist in the Content until the newline is reached. + + Key\: + \s = whitespace, except newline. + \b = either whitespace or printable, except newline. + \q = non-whitespace or quoteded whitespace, no whitespace outside of quotes. + \n = newline. + * = 0 or more occurrences. + + = one or more occurrences. + ()* = grouping that repeats 0 or more times. + + Before Structure\: + + Structure\: + \s*\q+\s+(\s*\q+)*\s*\n + + After Structure\: + + Example\: + # fss-0001 + # valid comments are ignored. + "The Object" Content "content 2" content_3. + Second object set. + + Objects would be\: + 1) The Object + 2) Second + + Contents would be\: + 1.1) Content + 1.2) content 2 + 1.3) content_3. + + 2.1) object + 2.2) set. diff --git a/documents/standards/fll/fss-0002.txt b/documents/standards/fll/fss-0002.txt new file mode 100644 index 0000000..37cbc31 --- /dev/null +++ b/documents/standards/fll/fss-0002.txt @@ -0,0 +1,57 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# +# Note: This file is in fss-0002 format and as a result the example below has to be escaped (can potentially be confusing when reading this raw). +# The "This Does\\\:" below is actually "This Does\:" when processed by fss-0002. + +Featureless Settings Specification: 0002 - Basic List: + Each Object starts at the beginning of a line and whitespace to the left of the Object is not treated as an object. + A colon followed by any whitespace until a newline terminates a valid Object. + Non-whitespace may not follow the colon of a valid Object. + + Content is represented as a single Content column of every line following a valid object until the end of file (or string) or until the next valid Object is found. + Any Content that could be interpreted as a valid Object must have the colon delimited. + + There is no single-quote or double-quote delimitation in this specification. + Only the colon that would result in a valid Object can be delimited. + + Empty Objects are allowed, that is, the length of the object may be 0. + + Key\: + \s = whitespace, except newline. + \o = any printable character, except unescaped ':'. + \l = any printable character or whitespace, except unescaped ':'. + \c = either whitespace or printable, including newline, that not interpretable as an Object. + \n = newline. + * = 0 or more occurrences. + + Before Structure\: + + Structure\: + \s*\o\l*:\s*\n\c*\n* + + After Structure\: + + Example\: + # fss-0002 + # valid comments are ignored. + "The Object"\: + Does not need to be quoted. + This: does not need to be delimited. + This Does\\\: + Second\: + Continues until EOS/EOF. + All whitespace, including newline (and leading whitespace) is "part of content." + # Valid comments are still ignored. + + Objects would be\: + 1) "The Object" + 2) Second + + Contents would be\: + 1.1) Does not need to be quoted. + This: does not need to be delimited. + This Does\: + 2.1) Continues until EOS/EOF. + All whitespace, including newline (and leading whitespace) is "part of content." diff --git a/documents/standards/fll/fss-0003.txt b/documents/standards/fll/fss-0003.txt new file mode 100644 index 0000000..5d54726 --- /dev/null +++ b/documents/standards/fll/fss-0003.txt @@ -0,0 +1,66 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Featureless Settings Specification: 0003 - Extended List: + Each Object starts at the beginning of a line and whitespace to the left of the Object is not treated as an object. + An open-brace ({) followed by any whitespace until a newline terminates a possible valid Object. + An Object is not considered fully valid until a valid close-brace (}) is found, designating the end of the Content. + Non-whitespace may not follow the open-brace of a valid Object. + + Content is represented as a single Content column of every line following a valid object until the end of file (or string) or until a non-delimited close-brace (}). + Any Content column that could be interpreted as an end of Content must be delimited if it should be part of the Content. + Whitespace may follow a valid close-brace but a terminating newline must be present to designate a valid end of Content. + + There is no single-quote or double-quote delimitation in this specification. + Only the open-brace that would result in a valid Object or the close-brace that would terminate valid Content can be delimited. + When inside potentially valid Content (which follows a valid Object) the open-brace cannot be delimited because this standard is not-recursive. + When not inside any potentially valid Content (that is, there is no previous unclosed Object), then the Object may be delimited. + Likelwise, the close-brace may only be delimited if it is within any potentially valid Content. + + Each delimit slash in a delimitable open-brace is treated as a potential delimit such that two slashes represents a single delimited slash ('\\{' would represent '\{'). + Only the first delimit slash in a delimitable close-brace is treated as a potential delimit ('\\\}' would represent '\\}'). + + Empty Objects are allowed, that is, the length of the object may be 0. + + Key\: + \s = whitespace, except newline. + \o = any printable character, except unescaped '{'. + \l = any printable character or whitespace, except unescaped '}'. + \c = either whitespace or printable, including newline, that is not interpretable as an Object. + \n = newline. + * = 0 or more occurrences. + + Before Structure\: + + Structure\: + \s*\o\l*{\s*\n\c*\n\s*}\s*\n + + After Structure\: + + Example\: + # fss-0003 + # valid comments are ignored. + "The Object" { + Does not need to be quoted. + This: does not need to be delimited. + \} + } + + Second { + Continues until EOS/EOF. + All whitespace, including newline (and leading whitespace) is "part of content." + # Valid comments are still ignored. + } + + Objects would be\: + 1) "The Object" + 2) Second + + Contents would be\: + 1.1) Does not need to be quoted. + This: does not need to be delimited. + } + 2.1) Continues until EOS/EOF. + All whitespace, including newline (and leading whitespace) is "part of content." diff --git a/documents/standards/fll/fss-0004.txt b/documents/standards/fll/fss-0004.txt new file mode 100644 index 0000000..edc42fa --- /dev/null +++ b/documents/standards/fll/fss-0004.txt @@ -0,0 +1,43 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Featureless Settings Specification: 0004 - Very Basic List: + This is a fss-0002 Basic List whose Content is then processed as fss-0000 Basic. + + All Basic List (fss-0002) escapes are applied before any Basic (fss-0000) is identified. + + See the fss-0000.txt and fss-0002.txt specification files for details on the syntax rules. + + Example\: + # fss-0004 + # valid comments are ignored. + "The Object"\: + Does not need to be quoted. + This: does not need to be delimited. + This Does\\\: + Second\: + Continues until EOS/EOF. + All whitespace, including newline (and leading whitespace) is "part of content." + # Valid comments are still ignored. + + Outer Objects would be\: + 1) "The Object" + 2) Second + + Inner Objects would be\: + 1.1) Does + 1.2) This: + 1.3) This + + 2.1) Continues + 2.2) All + + Inner Contents would be\: + 1.1.1) not need to be quoted. + 1.2.1) does not need to be delimited. + 1.3.1) Does\: + + 2.1.1) until EOS/EOF. + 2.2.1) whitespace, including newline (and leading whitespace) is "part of content." diff --git a/documents/standards/fll/fss-0005.txt b/documents/standards/fll/fss-0005.txt new file mode 100644 index 0000000..cb4ec32 --- /dev/null +++ b/documents/standards/fll/fss-0005.txt @@ -0,0 +1,63 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Featureless Settings Specification: 0005 - Somewhat Basic List: + This is a fss-0002 Basic List whose Content is then processed as fss-0001 Extended. + + All Basic List (fss-0002) escapes are applied before any Extended (fss-0001) is identified. + + See the fss-0001.txt and fss-0002.txt specification files for details on the syntax rules. + + Example\: + # fss-0005 + # valid comments are ignored. + "The Object"\: + Does not need to be quoted. + This: does not need to be delimited. + This Does\\\: + Second\: + Continues until EOS/EOF. + All whitespace, including newline (and leading whitespace) is "part of content." + # Valid comments are still ignored. + + Outer Objects would be\: + 1) "The Object" + 2) Second + + Inner Objects would be\: + 1.1) Does + 1.2) This: + 1.3) This + + 2.1) Continues + 2.2) All + + Inner Contents would be\: + 1.1.1) not + 1.1.2) need + 1.1.3) to + 1.1.4) be + 1.1.5) quoted. + + 1.2.1) does + 1.2.2) not + 1.2.3) need + 1.2.4) to + 1.2.5) be + 1.2.6) delimited. + + 1.3.1) Does\: + + 2.1.1) until + 2.1.2) EOS/EOF. + + 2.2.1) whitespace, + 2.2.2) including + 2.2.3) newline + 2.2.4) (and + 2.2.5) leading + 2.2.6) whitespace) + 2.2.7) is + 2.2.8) part of content. diff --git a/documents/standards/fll/fss-0006.txt b/documents/standards/fll/fss-0006.txt new file mode 100644 index 0000000..1cc6e18 --- /dev/null +++ b/documents/standards/fll/fss-0006.txt @@ -0,0 +1,46 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Featureless Settings Specification: 0006 - Somewhat Extended List: + This is a fss-0003 Extended List whose Content is then processed as fss-0000 Basic. + + All Extended List (fss-0003) escapes are applied before any Basic (fss-0000) is identified. + + See the fss-0000.txt and fss-0003.txt specification files for details on the syntax rules. + + Example\: + # fss-0006 + # valid comments are ignored. + "The Object" { + Does not need to be quoted. + This: does not need to be delimited. + \} + } + + Second { + Continues until EOS/EOF. + All whitespace, including newline (and leading whitespace) is "part of content." + # Valid comments are still ignored. + } + + Outer Objects would be\: + 1) "The Object" + 2) Second + + Inner Objects would be\: + 1.1) Does + 1.2) This\: + 1.3) } + + 2.1) Continues + 2.2) All + + Inner Contents would be\: + 1.1.1) not need to be quoted. + 1.2.1) does not need to be delimited. + 1.3.1) + + 2.1.1) until EOS/EOF. + 2.2.1) whitespace, including newline (and leading whitespace) is "part of content." diff --git a/documents/standards/fll/fss-0007.txt b/documents/standards/fll/fss-0007.txt new file mode 100644 index 0000000..3c377f5 --- /dev/null +++ b/documents/standards/fll/fss-0007.txt @@ -0,0 +1,66 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Featureless Settings Specification: 0007 - Very Extended List: + This is a fss-0003 Extended List whose Content is then processed as fss-0001 Extended. + + All Extended List (fss-0003) escapes are applied before any Extended (fss-0001) is identified. + + See the fss-0001.txt and fss-0003.txt specification files for details on the syntax rules. + + Example\: + # fss-0007 + # valid comments are ignored. + "The Object" { + Does not need to be quoted. + This: does not need to be delimited. + \} + } + + Second { + Continues until EOS/EOF. + All whitespace, including newline (and leading whitespace) is "part of content." + # Valid comments are still ignored. + } + + Outer Objects would be\: + 1) "The Object" + 2) Second + + Inner Objects would be\: + 1.1) Does + 1.2) This\: + 1.3) } + + 2.1) Continues + 2.2) All + + Inner Contents would be\: + 1.1.1) not + 1.1.2) need + 1.1.3) to + 1.1.4) be + 1.1.5) quoted. + + 1.2.1) does + 1.2.2) not + 1.2.3) need + 1.2.4) to + 1.2.5) be + 1.2.6) delimited. + + 1.3.1) + + 2.1.1) until + 2.1.2) EOS/EOF. + + 2.2.1) whitespace, + 2.2.2) including + 2.2.3) newline + 2.2.4) (and + 2.2.5) leading + 2.2.6) whitespace) + 2.2.7) is + 2.2.8) part of content. diff --git a/documents/standards/fll/fss-0008.txt b/documents/standards/fll/fss-0008.txt new file mode 100644 index 0000000..b020921 --- /dev/null +++ b/documents/standards/fll/fss-0008.txt @@ -0,0 +1,59 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Featureless Settings Specification: 0008 - Embedded List: + This is a fss-0003 Extended List whose Content is then recursively processed as fss-0003 Extended List. + + See the fss-0003.txt specification file for details on the syntax rules. + + Example\: + # fss-0008 + # valid comments are ignored. + "The Object" { + Does not need to be quoted. + This: does not need to be delimited. + \} + } + + Second { + Nested Example. + + Third { + Fourth { + This is nested Content. + } + } + } + + Outer Objects would be\: + 1) "The Object" + 2) Second + + Inner Objects (depth 1) would be\: + 2.1) Third + + Inner Objects (depth 2) would be\: + 2.1.1) Fourth + + Inner Contents (depth 0) would be\: + 1.1.1) Does not need to be quoted. + This: does not need to be delimited. + } + + 2.1.1) Nested Example. + + Third { + Fourth { + This is nested Content. + } + } + + Inner Contents (depth 1) would be\: + 2.1.1.1) Fourth { + This is nested Content. + } + + Inner Contents (depth 2) would be\: + 2.1.1.1.1) This is nested Content. diff --git a/documents/standards/fll/fss-0009.txt b/documents/standards/fll/fss-0009.txt new file mode 100644 index 0000000..aa322bc --- /dev/null +++ b/documents/standards/fll/fss-0009.txt @@ -0,0 +1,48 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Featureless Settings Specification: 0009 - Reverse Mapping: + This is based off of fss-0000 Basic, except the Object is at the end of the line. + + Each Object starts at the end of a line and whitespace to the left of the Object is not treated as part of the object. + Whitespace separates an Object from the Content. + An Object may be preceded by a newline, in which case means that the Object has no Content. + If only printing whitespace precedes a valid Object, that Object is considered to have no Content. + + Content exists on the same line as the Object. + Content is represented as a single Content column that begins at a newline. + Content column consists of everything following the first non-whitespace character at the start of the line until the Object is reached. + Content column includes trailing whitespace before newline is reached. + Content column does not include any of the whitespace between the last non-whitespace character and the start of the Object. + No delimits are supported in the Content. + + Key\: + \s = whitespace, except newline. + \b = either whitespace or printable, except newline. + \q = non-whitespace or quoted whitespace with no whitespace outside of the quotes. + \n = newline. + * = zero or more occurrences. + + = one or more occurrences. + + Before Structure\: + + Structure\: + \s*\b*\s+\q+\s*\n + + After Structure\: + + Example\: + # fss-0009 + # valid comments are ignored. + Content from newline. "The Object" + object set. Second + + Object would be\: + 1) The Object + 2) Second + + Content would be\: + 1.1) Content from newline. + 2.1) object set. diff --git a/documents/standards/fll/fss-000a.txt b/documents/standards/fll/fss-000a.txt new file mode 100644 index 0000000..e023ac5 --- /dev/null +++ b/documents/standards/fll/fss-000a.txt @@ -0,0 +1,51 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Featureless Settings Specification: 000A - Extended Reverse Mapping: + This is based off of fss-0001 Extended, except the Object is at the end of the line. + + Each Object starts at the end of a line and whitespace to the left of the Object is not treated as an object. + Whitespace separates an Object from the Content. + An Object may be followed by a newline, in which case means that the Object has no Content. + If only printing whitespace follows a valid Object, that Object is considered to have no Content. + + Content exists on the same line as the Object. + Content is represented as multiple Content columns. + Content columns are whitespace separated parts within the Content is terminated by the start of the Object. + Any number of Content columns may exist in the Content until the Object is reached. + + Key\: + \s = whitespace, except newline. + \b = either whitespace or printable, except newline. + \q = non-whitespace or quoteded whitespace, no whitespace outside of quotes. + \n = newline. + * = 0 or more occurrences. + + = one or more occurrences. + ()* = grouping that repeats 0 or more times. + + Before Structure\: + + Structure\: + \s*(\s*\q+)*\s+\q+\s*\n + + After Structure\: + + Example\: + # fss-000a + # valid comments are ignored. + Content "content 2" content_3. "The Object" + object set. Second + + Objects would be\: + 1) The Object + 2) Second + + Contents would be\: + 1.1) Content + 1.2) content 2 + 1.3) content_3. + + 2.1) object + 2.2) set. diff --git a/documents/standards/fll/fss-000b.txt b/documents/standards/fll/fss-000b.txt new file mode 100644 index 0000000..0be7a62 --- /dev/null +++ b/documents/standards/fll/fss-000b.txt @@ -0,0 +1,49 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Featureless Settings Specification: 000B - Simple List: + This might be similar to fss-0008 - Embedded List, except it is an fss-0003 Extended List with a (non-recursive) fss-0002 Basic List inside the Content. + + See the fss-0002.txt and fss-0003.txt specification files for details on the syntax rules. + + Example\: + # fss-000b + # valid comments are ignored. + "The Object" { + Does not need to be quoted. + This: does not need to be delimited. + \} + } + + Second { + Nested Example. + + Third: + Fourth: + There is parallel to Second rather than nested within Second. + } + + Outer Objects would be\: + 1) "The Object" + 2) Second + + Inner Objects (depth 1) would be\: + 2.1) Third + 2.2) Fourth + + Inner Contents (depth 0) would be\: + 1.1.1) Does not need to be quoted. + This: does not need to be delimited. + } + + 2.1.1) Nested Example. + + Third: + Fourth: + There is parallel to Second rather than nested within Second. + + Inner Contents (depth 1) would be\: + 2.1.1.1) + 2.2.1.1) There is parallel to Second rather than nested within Second. diff --git a/documents/standards/fll/fss-000c.txt b/documents/standards/fll/fss-000c.txt new file mode 100644 index 0000000..bff3a0d --- /dev/null +++ b/documents/standards/fll/fss-000c.txt @@ -0,0 +1,23 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Featureless Settings Specification: 000C - IKI Text: + The IKI specifications are separate specifications from the FSS specification. + This is simply a more formal way to designate that this format utilizes IKI syntax. + + The IKI syntax may be used in any FSS specification. + The IKI format may be added to the. + + See the iki.txt specification for details on the IKI specifications. + + Example\: + # fss-000c iki-0000 + + This is a emphasis:"formal example" utilizing the FSS headers. + + Example\: + # iki-0000 + + This is a emphasis:"informal example" utilizing the IKI headers. diff --git a/documents/standards/fll/fss-000d.txt b/documents/standards/fll/fss-000d.txt new file mode 100644 index 0000000..c7cb0d1 --- /dev/null +++ b/documents/standards/fll/fss-000d.txt @@ -0,0 +1,78 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Featureless Settings Specification: 000D - Basic Rule: + This is a special case that follows fss-0002 (Basic List), and different FSS formats inside this Basic List. + This Basic List is considered the "Outer List" and the Content of this Outer List is considered the "Inner Content". + + The Inner Content may be any of the following FSS formats: fss-0000 (Basic), fss-0001 (Extended), and fss-0003 (Extended List). + The way in which each format is determined is first to see if the Inner Content Object would be a valid Extended List Object. + If the Inner Content Object is not a valid Extended List Object, then check to see if it is an Basic/Extended Object. + + The FSS Basic and FSS Extended Objects have the same format for Object names but the FSS Extended List Object is slightly different. + Anything that would match an FSS Extended List Object must therefore be an FSS Extended List Object. + + This supports the use of iki-0000 (Unrestricted) but only within the Content of the outermost Basic List. + That is to say, the IKI is only processed once. + Additional restrictions on the use of IKI syntax is allowed if explicitly defined in the implementing specification. + This additional restriction may also include using a more restrictive IKI syntax, such as "iki-0001 (Basic IKI)". + + Anything implementing this specification may impose its own restrictions on when to determine if the Inner Content is what FSS format, based on Object names. + + See the fss-0000.txt, fss-0001.txt and fss-0003.txt specification files for details on the syntax rules. + + Example\: + # fss-000d + main: + name "Boot Devices" + + script: + start { + ip addr add 127.0.0.1/8 label lo dev lo; + ip link set lo up; + } + + stop { + ip link set lo down; + } + + command: + start mount -a -O no_netdev + stop umount -arf -O no_netdev + + Outer List Objects would be\: + 1) main + 2) script + 3) command + + Outer List Contents would be\: + 1.1) name "Boot Devices" + + 2.1) start { + ip addr add 127.0.0.1/8 label lo dev lo; + ip link set lo up; + } + + stop { + ip link set lo down; + } + + 3.1) begin mount -a -O no_netdev + end umount -arf -O no_netdev + + Inner Content Objects would be\: + 1.1.1) name + 2.1.1) start + 2.1.2) stop + 3.1.1) begin + 3.1.2) end + + Inner Content Contents would be (without breaking Content into its individual parts)\: + 1.1.1) Boot Devices + 2.1.1) ip addr add 127.0.0.1/8 label lo dev lo; + ip link set lo up; + 2.1.2) ip link set lo down; + 3.1.1) mount -a -O no_netdev + 3.1.2) umount -arf -O no_netdev diff --git a/documents/standards/fll/fss-000e.txt b/documents/standards/fll/fss-000e.txt new file mode 100644 index 0000000..1309da9 --- /dev/null +++ b/documents/standards/fll/fss-000e.txt @@ -0,0 +1,66 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# +# +# Note: This file is in fss-0002 format and as a result the example below has to be escaped (can potentially be confusing when reading this raw). +# The "header\:" in the example below is actually "header:" when processed by fss-0002. + +Featureless Settings Specification: 000e - Payload: + This is a fss-0002 Basic List with two required objects\: + 1) "header". + 2) "payload". + + The header's Content is of type fss-0001 Extended. + The payload's Content is of any type including raw binary data. + + The payload is required to be the last list Object in the file. + The payload is recommended to have its size designated in some manner in the "header". + The designated size is recommended to use the fss-0001 Object "length". + The fss-0001 Content "part" is suggested to be used for fss-0001 Object "length" to represent a part of a set of packets intended to represent a single object spread across multiple payloads. + The fss-0001 Object "total" with the Content being a whole positive number is suggested to be used to represent the total number of packets that represent a whole. + The fss-0001 Object "part" with the Content being a whole positive number is suggested to be used to represent the number identifying which part of the whole it is. + The payload may contain anything, including NULL characters. + The payload is terminated by the EOF (end of file) character or when a some designated length is reached. + The length used to designate the payload size does not necessarily have to be defined in the 'header". + That is to say, if the payload is expected to be of some pre-defined or static length then a length does even if that length is not provided in the "header". + Nothing in the payload may be considered a valid list Object and therefore there will be no escaping allowed (No further fss-0002 Basic List Objects are allowed at this point). + Comments are not considered comments inside the payload and are instead considered part of the payload, as-is. + The payload may be empty (length may be zero), but the list Object "payload" must still exist. + + The length and status may be in binary, octal, decimal, duodecimal, or hexidecimal numerical format. + The status may alternatively be represented as the status name string. + What the status code represents is application specific (or specific to a sub-standard) but may often be used to represent FLL status codes. + The status, when representing an FLL status code as a number, may contain error and warning bit. + The status, when representing an FLL status code as a number, the status number is binary sensitive and may not be portable across binaries or systems. + For FLL status codes, consider using status as a name string to ensure cross-system or cross-binary compatibility. + + Other than the reserved list Objects "header" and "payload" any other valid Object may be specified. + + Example\: + # fss-000e + # valid comments are ignored. + header\: + type error + status 296 + length 30 + + payload\: + The program is out of memory. + + Outer Objects would be\: + 1) header + 2) payload + + "header" Objects would be\: + 1.1) type + 1.2) status + 1.3) length + + "header" Contents would be\: + 1.1.1) error + 1.2.1) 296 + 1.3.1) 30 + + The payload would be\: + 2) The program is out of memory. diff --git a/documents/standards/fll/fss-000f.txt b/documents/standards/fll/fss-000f.txt new file mode 100644 index 0000000..6cafcb7 --- /dev/null +++ b/documents/standards/fll/fss-000f.txt @@ -0,0 +1,46 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Featureless Settings Specification: 000f - Simple Packet: + This is a network packet format that contains FSS-000E (Payload) within it. + + The Simple Packet structure is described in blocks, of which are structured in bytes. + + There are only three blocks in this format\: + 1) Control Block. + 2) Size Block. + 3) Payload Block. + + The Control Block is the first block in the packet and is considered endianless. + There exists only a single byte within the Control Block. + Regardless of the endianness of the packet, the leftmost bit is always the "string" or "binary" bit. + The second bit following that bit represents the endianness bit. + + The "string" or "binary" bit, a value of 0 designates that the packet is in string format and a value of 1 designates that the packet is in binary format. + While the packet might be considered to be in string format, it is technically always in binary format due to the Control Block and Size Block. + This means that the bit designating the packet as a "string" packet or a "binary" packet is referring to whether or not the Payload Block is in "string" format or is in "binary" format. + + The endianness bit designates whether or not the packet is in big endian or little endian format. + A bit value of 0 designates that this packet is in little endian and a value of 1 designates that this packet is in big endian format. + All binary data within this packet, following the Control Block, must respect this endianness bit (including the Size Block). + + The remaining bits are not defined by this standard and are expected to be 0. + Non-formal or local uses may utilize these remaining 6 bits as desired. + However, there may be additional standards that expand upon this and utilize these remaining Control bits. + Anything that utilizes these unused Control bits may add or remove additional Blocks after the Control Block as they see fit. + + The Size Block is an unsigned 32-bit integer representing the size of the entire packet, including the Control Block and Size Block. + This size must exactly match the packet to be a valid packet. + The size represents number of bytes in the file. + The Control Block is 1 byte long and the Size Block is 4 bytes long and so the maximum available size is (2^32)-6. + + The Payload Block is not defined by this standard of that that it exists and should be in FSS-000E (Payload) format. + The FSS-000E (Payload) may be represented in either string format or binary format. + The FSS-000E (Payload) may contain multiple "header"s but may only contain a single "payload". + With this in mind, it is recommended that only a single "header" be supported in the Payload Block. + + Example Packet Structure\: + [ Control Block ] [ Size Block ] [ Payload Block ] + [ 0b10000000 ] [ 0b00000000 0b00000000 0b00000100 0b11010010 ] [ size: 1229 (1234 - 5) ] diff --git a/documents/standards/fll/fss.txt b/documents/standards/fll/fss.txt new file mode 100644 index 0000000..06bf0f9 --- /dev/null +++ b/documents/standards/fll/fss.txt @@ -0,0 +1,148 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +Featureless Settings Specifications: + A Keep It Simple Stupid specifications for configuration/settings files. + + This specification defines the following\: + - Will consist of numerous different kinds of specification files, depending on the type of information stored. + - As with the practice of "#!/bin/bash", the setting files SHOULD have the following: "# fss-????" format, such as "# fss-0001". + - Multiple sub-standards may be appended to the FSS header, using the same format structure, such as supporting IKI: "# fss-0000 iki-0000" or HTML5: "# fss-0000 html-0005". + - With the ? representing the (hexadecimal/base-16) number that represents the particular specification structure. + - All settings specifications SHOULD avoid any form of noise, relative to the data being stored. + - XML would be considered anti-KISS due to the extreme level of noise generated by the XML language (not easy to read). + - The settings files are setup so that they should (reasonably) produce easy readability on both the console and in a GUI. + + The most basic form of FSS specifications consist of two main parts: an "Object" and the "Content". + - Object: Considered the name or identifier of some particular data; Objects do not need an associated Content. + - Content: The data associated with a given Object; all Content MUST have an associated Object. + + Objects and Contents can include any characters allowed by the specifications. + The specification may choose how a given Object or Content are represented and parsed. + For example, in fss-0000 (Basic), Content is treated as a single item whereas in fss-0001 (Extended), Content is broken apart in multiple sub parts. + + Contents may be broken up into zero or more discrete sets of Content. + Each of these discrete sets of Content are referred to as a column. + These columns do not need to be setup in a column structure, the word "column" is simply used as a grouping terminology. + While a Content refers to the entire set, a column (more specifically, a Content column) refers to the individual discrete sets within the Content. + For example, in fss-000 (Basic) the entire Content may be further represented as a single column. + For example, in fss-001 (Extended) the entire Content may be further represented as multiple columns. + + In all cases, specifications that separate Objects from Contents using white space, the first white space separating the Object and Content must not be considered part of the Object nor part of the Content. + All spaces after the first separating white space is generally ignored until the first non white space character is found, unless otherwise specified. + + Unless otherwise specified, all specifications are newline sensitive ('\n' only). + Newline characters are only '\n' and are never anything else ('\r' is not considered newline in any manner). + Whitespaces characters that are printable, such as tabs and spaces, must be considered the same type for the purposes of parsing. + Non-printing white spaces characters (zero-width characters) are ignored, are treated as placeholders for processing, or are considered part of the appropriate character if they are Unicode combining characters (this includes zero-width punctutations characters and similar). + In terms of processing, it is recommended that the NULL character is not considered the end of a string, but this is only a suggestion. + + Unless otherwise specified, newlines designate the potential start (or end) of an Object or Content. + + Unless otherwise specified, white space may exist to the left of the start of Objects. + Unless otherwise specified, white space may exist to the right of the end of Objects, but only if that given Object is properly quoted and the white space is after the terminating quote but before any Content. + + Unless otherwise specified, white space immediately both before (and after, outside of the terminating quote) an Object is not considered part of the Object. + This simplifies identifying the object, use quoted Objects to support white space before/after an object for styling purposes. + + Unless otherwise specified, quotes may only be either a single quote (') or a double quote (") and only a backslash '\' may be used as a delimiter. + For example, fss-0000 (Basic)\: + \"Object 1" has content starting at the '1', with an Object named '"Object'. + \\"Object 1" has content starting at the '1', with an Object named '\"Object'. + "Object 1\" is an unterminated object due to the escaped closing quote. + "Object 1\\" has content starting at the 'has', with an Object named "Object 1\". + + Unless otherwise specified, character/data delimits are performed only when required and not unilaterally. + In the case of Objects, delimits would only apply when that Object could be potentially identified as an Object. + For example, fss-0001 (Extended) needs quotes to group parts that include spaces, if there is no initial quote, then a quote following the data MUST NOT be delimited. + Such as these following three lines\: + "Object 1" "This is a single quoted Content." \"Additional unquoted Content." + Object_2 This is multiple" Contents and the trailing quote does not need to be delimited. + "Object \"3" 'Wouldn't require delimits if no white space or end of string after.' + + Unlike this specification, a more traditional delimit process would have the above three lines instead represented as\: + "Object 1" "This is a single quoted Content." \"Additional unquoted Content.\" + Object_2 This is multiple\" Contents and the trailing quote does not need to be delimited. + "Object \\"3" 'Wouldn\'t require delimits if no white space or end of string after.' + + These examples would resolve as follows\: + 1) Object\: + - Object 1 + Content\: + - This is a single quoted Content. + - "Additional + - unquoted + - Content" + 2) Object\: + - Object_2 + Content\: + - This + - is + - multiple" + - Contents + - and + - the + - trailing + - quote + - does + - not + - need + - to + - be + - delimited. + 3) Object\: + - Object \"3 + Content\: + - Wouldn't require delimits if no white space or end of string after. + + All specifications are expected to support or be of the character encoding UTF-8; however, there is no imposed restriction on supporting or using any other encoding. + Those encodings must only support the appropriate characters required by a given standard for differentiating Objects, Contents, and delimits. + All specifications do assume ASCII and Unicode support. + + Unless otherwise specified, comments are designated by the pound symbol '#' but only if only white space is to the left of the pound or the pound '#' is at the start of the line. + There is no support for inline comments. + Unless otherwise specified, the start comment may be delimited by '\' in the same manner as Objects and Contents are. + This delimit only applies to the start of a comment (the pound '#' character) as there is no terminating character for a comment (other than a newline '\n'). + A line containing a valid comment is in its entirety ignored. + This means that if there is white space before the designation symbol (the pound '#' character) then that white space is ignored. + + Unless otherwise specified, all designation characters MUST represent ASCII codes. + With designation characters being any character code used to designate how to identify an Object or Content (such as a colon ':' at the end of a basic list). + This keeps the processing and logic simple and safe, for both UTF-8 and ASCII. + Whitespace used for designation characters MUST include support for UTF-8 white space characters, unless otherwise specified. + However, these white space used as a designation character, must be printing white space that are not combining white space characters. + Any visible/graph character that is considered a white space (such as U+1680 ' ') is not to be considered a white space, unless otherwise specified. + + When used for syntax matching purposes, zero-width Unicode characters are only to be considered zero-width unless otherwise specified. + For example, the "invisible plus" character (U+2064) is not to be considered as a plus. + + The UTF-8 BOM is not allowed as a Byte Order Mark; instead, it must always be treated as the character represented by its code (unless explicitly allowed to represent a BOM by a standard). + + The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (U+2010 and U+2011) (unless otherwise specified). + + In any specification where security is intended, if there exists a Unicode character that matches an ASCII character, that Unicode character MAY be prohibited by that standard in favor of the ASCII equivalent. + One such example is in the case of a URL, where the name could be used to trick a person (http://this-site.com/ vs http://this‐site.com/). + This (potential insecure behavior) is allowed in general because a well written program would be able to detect and communicate the possible misunderstanding and thereby avoid mistakes without imposing any character restrictions. + + This is a common behavior for security reasons, each character used for any special purposes must be visibly distinct, with white space and non-printing characters as the exception to the words "visibly distinct". + + The follow specifications are defined in this project. + Each of these specifications has a common name associated with the specification number. + - fss-0000: Basic + - fss-0001: Extended + - fss-0002: Basic List + - fss-0003: Extended List + - fss-0004: Very Basic List + - fss-0005: Somewhat Basic List + - fss-0006: Somewhat Extended List + - fss-0007: Very Extended List + - fss-0008: Embedded List + - fss-0009: Reverse Mapping + - fss-000a: Extended Reverse Mapping + - fss-000b: Simple List + - fss-000c: Iki Text + - fss-000d: Basic Rule + - fss-000e: Payload + - fss-000f: Simple Packet diff --git a/documents/standards/fll/iki-0000.txt b/documents/standards/fll/iki-0000.txt new file mode 100644 index 0000000..35c98ba --- /dev/null +++ b/documents/standards/fll/iki-0000.txt @@ -0,0 +1,9 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +IKI Specification: 0000 - Unrestricted: + This specification provides no restrictions on the vocabulary. + + See the iki.txt specification file for details on the syntax rules. diff --git a/documents/standards/fll/iki-0001.txt b/documents/standards/fll/iki-0001.txt new file mode 100644 index 0000000..08a35cf --- /dev/null +++ b/documents/standards/fll/iki-0001.txt @@ -0,0 +1,20 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +IKI Specification: 0001 - Basic: + This specification provides a small set of vocabulary names meant to be associated with common uses, such as e-mail addresses and URLs. + + Vocabulary\: + - address: any mailing address, except for e-mail and URI. + - code: all text contained within represent code and should be presented as such. + - email: any valid e-mail address. + - phone: any valid phone number. + - quote: all text within represents some quote. + - uri: any valid URI (allows URL and URN). + - url: any valid URL. + - urn: any valid URN. + - var: all text contained within represents some sort of variable. + + See the iki.txt specification file for details on the syntax rules. diff --git a/documents/standards/fll/iki-0002.txt b/documents/standards/fll/iki-0002.txt new file mode 100644 index 0000000..b67d84d --- /dev/null +++ b/documents/standards/fll/iki-0002.txt @@ -0,0 +1,21 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +IKI Specification: 0002 - Simple Script: + This specification provides a small set of vocabulary names meant to be used for substitution in simple scripts. + + This specification only loosely defines the vocabulary context. + This vocabulary may be further extended but must at least support the taxonomy defined here. + Flexibility on interpretation is intended so that the context can be more fine-tuned and customized. + + The taxonomy for the "context", "define", and "parameter" are intentionally not defined here and left open. + One utilizing this should document the taxonomy for each of these as desired. + + Vocabulary\: + - context: intended to be used for printing (or tagging) context codes before and after text, such as with color context. + - define: intended to be used for global properties, much like a C/C++ #define. + - parameter: intended to be used for parameters or variables. + + See the iki.txt specification file for details on the syntax rules. diff --git a/documents/standards/fll/iki.txt b/documents/standards/fll/iki.txt new file mode 100644 index 0000000..7c84ab3 --- /dev/null +++ b/documents/standards/fll/iki.txt @@ -0,0 +1,65 @@ +# fss-0002 +# +# license: open-standard-license-1.0 +# + +IKI Specifications: + IKI is a minimally structured WIKI-like syntax meant to be simpler than WIKI syntax. + + The IKI syntax provides a vocabulary name (with specific context associated with it) followed by quoted code that is associated with the given vocabulary name. + The vocabulary represents a list of allowed object names that may also have specific contextual meaning defined by a given IKI specification. + The variable name is considered the "Object". + The variable variable is considered the "Content". + + The IKI format will use iki-0000 to represent an IKI with no explicitly defined vocabulary. + Whereas iki-0001 and beyond represent a specific IKI vocabulary. + + A potential IKI variable name starts on word (or "_", "-", "+") characters. + Whitespace and non-word (and non "_", "-", "+") character punctuations may not exist as part of the variable name. + The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (U+2010 and U+2011). + + Any valid IKI data may be escaped to make it treated as non-IKI data by prepending a backslash "\" before the colon ":" that is before the opening quote (single or double). + + Unicode punctuation connector characters are supported just like "_", except when they connect outside the current line (such as U+FE33 "︳"). + Unicode invisible punctuations (such as invisible plus: U+2064) are not considered a punctuations in this standard (because they a zero-width characters), therefore they are not to be considered a valid '_', '-', or '+' Unicode equivalents. + + Key\: + \o = any printable word character, including "_", "-", "+" (and Unicode equivalents). + \c = any character, including whitespace and non-printing, and any delimited quote (used as the opening quote) or a any quote (undelimited) not used as the opening quote. + \q = either a single quote (') or a double quote ("). + \x = any character. + \W = any non-word character, discluding "_", "-", "+" (and Unicode equivalents). + \e = an optional escape sequence of any number of backslashes, such as "\". + * = 0 or more occurrences. + ~ = one or more occurrences, or 0 if at start of file. + + Before Structure\: + \x*\W~\*:* + + Structure\: + \o\e:\q\c\q + + After Structure\: + + Example\: + # fss-000c iki-0000 + + This is my sentence, anything can go here but sometimes I want to emphasis:"emphasize some text". + + Other times I want to render a url such as this example url: url:'http://www.example.com/url with space/'. + + There are no comments, except for maybe the FSS header (which would not resolve to any IKI syntax anyway). + + Quotes may be included, such as: code:"const char *string = \"My \\\"quoted\\\" C string.\";". + + The following emphasis\:"is escaped to not be treated as IKI data". + + Objects would be\: + 1) emphasis + 2) url + 3) code + + Contents would be\: + 1.1) emphasize some text + 2.1) http://www.example.com/url with space/ + 3.1) const char *string = "My \"quoted\" C string."; diff --git a/fll.html b/fll.html new file mode 100644 index 0000000..d23257f --- /dev/null +++ b/fll.html @@ -0,0 +1,113 @@ + + + + Kevux Systems and Software - Featureless Linux Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Featureless Linux Library

+
+ +
+
+

About

+
+ +
+

+ The Featureless Linux Library is a collection of standards, specifications, and software for providing a suite of Linux focused functionality. One of the main goal is to play on the word "feature" and provide a featureless library. That is, a library that is not always changing and being rewritten breaking API and ABI to introduce features. How this is achieved and to what extend this is achieved and followed is to be described in the documentation and specifications. +

+

+ The project can be found in three locations. +

+
    +
  1. Sourceforge
  2. +
  3. Github
  4. +
  5. Gitlab
  6. +
+

+ The source code contains the plain text documentation describing the projects and specifications describing the standards. This website will be updated to present this material. +

+

+ In addition to being a library, the FLL also provides several programs. Some programs, such as Featureless Make (a build system similar to GNU Make), are forever part of the FLL. Other programs, such as the Controller program, will eventually bud off into their own project space. +

+
+
+ +
+
+

Current Release

+
+
+

+ The current stable release series of FLL is 0.6. At this time, the official stable release for the 0.6 series is not yet released but a release candidate is already out. The release candidate is version 0.5.9. +

+
+
+
+
+
+ + diff --git a/images/kevux.ico b/images/kevux.ico new file mode 100755 index 0000000..9ddf9bd Binary files /dev/null and b/images/kevux.ico differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..7a12e5d --- /dev/null +++ b/index.html @@ -0,0 +1,118 @@ + + + + Kevux Systems and Software - News + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

News

+
+ +
+
+

2022 / 05 / 06 - Basic Program Documentation

+
+
+

+ Update the website, bringing in my initial pass at the documentation for each of the programs provided by the FLL project. Most of this documentation is copied from the help of each program and any improvements or deviations are incidental. +

+

+ While working on the documentation, I discovered and fixed random problems. In particular, the iki_read program in the release candidate has a major regression where it doesn't do anything. This is the result of a very minor mistake in passing the wrong size variable to the file read functions. Essentialy, the iki_read program is only processing files of length 0 and as a result never produces any output. This is now fixed upstream and I am even happier with the practice of using release candidates. +

+

+ Continue reading… +

+
+
+ +
+
+

2022 / 05 / 01 - Website Redesign

+
+
+

+ With a stable release of the Featureless Linux Library around the corner and the resuming of development of the Turtle Kevux Distribution, it is now time to refresh the website. +

+

+ The available functionality in the HTML standard has changed a decent amount since this website was last updated. This new design focuses on a very primitive look and feel utilizing a lot of the built in visual tools available to the HTML5 and CSS3 languages. The website is being built in stages, to allow for prioritizing getting information out over getting information looking great. This website even actively uses UTF-8. +

+

+ Continue reading… +

+
+
+
+
+
+ + diff --git a/licenses.html b/licenses.html new file mode 100644 index 0000000..8394dfb --- /dev/null +++ b/licenses.html @@ -0,0 +1,163 @@ + + + + Kevux Systems and Software - Licenses + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Licenses

+
+ +
+
+

Website Licenses

+
+
+

+ There are multiple licenses for content on this website and content served from this website (such as a Distribution). The website documentation covers only the parts of the website that are not already under an existing license. The specifications are under a different license. All files, be they binaries or text files, provided by the distributions have their own licenses. The Featureless Linux Library and all files provided along with it have their own licenses. Documentation associated with each of these projects are under a different license as defined by their associated project. +

+

+ Everything else on this website, such as this news blog, that is content is under CC By SA 4.0 license. +

+

+ Everything else on this website that is source code, including HTML markup, CSS, and Javascript, is under LGPLv2.1+ license. +

+

+ © 2022 Kevin Day +

+
+
+ +
+
+

Kevux Distribution Licenses

+
+
+

+ There is currently only a single Kevux distribution, called Turtle Kevux. This distribution is a collection of numerous software projects and their related files. Each of these is under their own respective license, which is provided with their respective source code. The Kevux-specific code, such as the Turtle Kevux Installation Scripts is under the LGPLv2.1+ license. The TKIS also heavily utilizes the Featureless Make system as well as numerous Featureless Settings Specification processing programs that are also under the LGPLv2.1+ license. +

+

+ Each project is copyrighted by their respective authors. The Kevux Distribution specific files are copyrighted by Kevin Day. +

+
+
+ +
+
+

Featureless Linux Library Licenses

+
+
+

+ The FLL source code is © 2011-2022 Kevin Day under the LGPLv2.1+ license. +

+

+ The FLL standards and specifications are © 2011-2022 Kevin Day under the OSLv1+. The OSLv1+ is under active development and may be of a lesser version, such as 0.5. For simplicity, these are being referred to as 1.0 as the goal and intent of the license grant is for version 1 or greater. Therefore any version less than 1 is implicitly assumed to be of version 1 or greater. +

+ Documentation contained within the FLL that is not under a specification license is © 2011-2022 Kevin Day under the CC By SA 4.0. +

+
+
+ +
+
+

Individual Projects Licenses

+
+
+

+ All of the projects listed on the Projects pages are either part of the FLL or are based on the FLL. As a result they are © 2011-2022 Kevin Day under the LGPLv2.1+. +

+
+
+ +
+
+

Documentation Licenses

+
+
+

+ Documentation that is used to described specifications (included Application Programming Interfaces) are © 2011-2022 Kevin Day under the OSLv1+. +

+

+ ALl remaining documentation that does not fall under the OSLv1+ are © 2011-2022 Kevin Day under the CC By SA 4.0. +

+
+
+
+
+
+ + diff --git a/news/2022_05_01-website_redesign.html b/news/2022_05_01-website_redesign.html new file mode 100644 index 0000000..0a40d25 --- /dev/null +++ b/news/2022_05_01-website_redesign.html @@ -0,0 +1,99 @@ + + + + News - 2022/05/01 Website Re-design + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

2022 / 05 / 01 - Website Redesign

+
+ +
+

+ With a stable release of the Featureless Linux Library around the corner and the resuming of development of the Turtle Kevux Distribution, it is now time to refresh the website. +

+

+ The available functionality in the HTML standard has changed a decent amount since this website was last updated. This new design focuses on a very primitive look and feel utilizing a lot of the built in visual tools available to the HTML5 and CSS3 languages. The website is being built in stages, to allow for prioritizing getting information out over getting information looking great. This website even actively uses UTF-8. +

+

+ The website is now built to be more "responsive" (as the buzz-word goes). I do not like the responsive design because it forces assumptions that may not be desirable for the end-user (which is generally what I plagues me). I took an approach to utilize the device with CSS3 properties to ensure that the website looks like a proper website even when your window size is small but when you are on a small device it uses the more mobile look and feel. This is implemented entirely without Javascript, including the mobile menu. The downside of this is that the page gets reloaded on these kinds of interactions. I will eventually write an optional Javascript file that will handle these kinds of interactions without page reloads. I have tested this mobile view on my Pinephone but I do not have other devices to test and cannot guarantee the presentation is displayed as intended. This website is also intended to be automatically print-friendly. +

+

+ The Turtle Kevux Distribution is having several of the less used files removed so that I can reclaim some of the much need disk space. There latest Turtle Kevux Distribution is undergoing heavy modification and revitalization. The Featureless Linux Library will be incorporated into the Turtle Kevux Distribution. Some of the concepts from Dragonfly Kevux Distribution are being merged into the Turtle Kevux Distribution. The Dragonfly Kevux Distribution is being put on hold until all other priorities are met. +

+

+ The Featureless Linux Library itself has had major improvements and will ultimately be used to help generate this static website. For now, I am just manually creating the pages. This will quickly become hard to manage but hopefully I will write the processing scripts to generate this website before that happens. +

+

+ I also plan on sending out more communications, but I have yet to figure out when and how often I shall do this. +

+

+ Kevin Day +

+
+
+
+
+ + diff --git a/news/2022_05_06-basic_program_documentation.html b/news/2022_05_06-basic_program_documentation.html new file mode 100644 index 0000000..13a4856 --- /dev/null +++ b/news/2022_05_06-basic_program_documentation.html @@ -0,0 +1,96 @@ + + + + News - 2022/05/06 Basic Program Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

2022 / 05 / 06 - Basic Program Documentation

+
+ +
+

+ Update the website, bringing in my initial pass at the documentation for each of the programs provided by the FLL project. Most of this documentation is copied from the help of each program and any improvements or deviations are incidental. +

+

+ While working on the documentation, I discovered and fixed random problems. In particular, the iki_read program in the release candidate has a major regression where it doesn't do anything. This is the result of a very minor mistake in passing the wrong size variable to the file read functions. Essentialy, the iki_read program is only processing files of length 0 and as a result never produces any output. This is now fixed upstream and I am even happier with the practice of using release candidates. +

+

+ The website has been updated with an appropriate .htaccess file to better handle paths. I even decided to further emphasize the retro-internet feel by redirecting directory paths to html files, if they exist. I imagine this may annoy some of the people out there. Minor problems here and there have been addressed as I discovered them. +

+

+ This website is also designed to be fully downloadable and readable locally (and even offline). Whenever I have notable changes on the website, I will update the downloadable tarball of this website. +

+

+ A Source Code link has been added on the index page (the main news page) as a way for people who just want a fast way to get to the latest code. +

+

+ Kevin Day +

+
+
+
+
+ + diff --git a/not_found.html b/not_found.html new file mode 100644 index 0000000..591fe56 --- /dev/null +++ b/not_found.html @@ -0,0 +1,85 @@ + + + + Kevux Systems and Software - Page Not Found (404) + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Page Not Found (404)

+
+ +
+

+ No content found at the requested path. Please go back or consider visiting the News page. +

+
+
+
+
+ + diff --git a/projects.html b/projects.html new file mode 100644 index 0000000..e869e14 --- /dev/null +++ b/projects.html @@ -0,0 +1,521 @@ + + + + Kevux Systems and Software - Projects + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Projects

+
+ +
+
+

Programs

+
+
+

+ The Featureless Linux Library is a major project and has several sub-parts, including several programs. The FLL is broken up into multiple sub-projects that are libraries themselves or programs. This page describes those programs from FLL as well as any other programs and projects associated with Kevux Systems or Kevin Day. +

+

+ Of particular note is that most, if not all, of the Kevux Systems programs are written to provide an API (and its respective ABI). This allows the programs themselves to be used as a library. +

+

+ The programs themselves follow FLL design principles on making the interface human-friendly. Software should be a tool for humans, and not a tool for machines. +

+
+
+ +
+
+

Byte Dump

+
+
+

+ This tool is a nifty way to get a UTF-8 friendly hexdump alternative.
+ The output is intended to honor some of the feel of hexdump but do so in an FLL way. +

+
+
+ +
+
+

Control

+
+
+

+ This project is not complete and development is planned for the FLL 0.7 development series.
+
+ The goal of this is to communicate with the "Controller" program, such as starting or stopping services. +

+
+
+ +
+
+

Controller

+
+
+

+ This project is not complete and development is planned for the FLL 0.7 development series. +

+

+ The goal of this is to provide task and service management similar to sysvinit, initng, and systemd.
+ This is designed to be used for booting the system as if it were /sbin/init. +

+

+ This should be controllable from user-space via the "Control" program. +

+
+
+ +
+
+

Featureless Make

+
+
+

+ The Featureless Make is the original program and goal of the FLL.
+ The GNU Make, Autoconf, and all those build processes are unnecessarily complex. +

+

+ A major problem with these build systems is that they try to manage installation as well as compilation.
+ A build system should be just that a build system.
+ Trying to handle how the built package gets installed should be done by system administrators or distributors.
+ By avoiding this, the code becomes simpler, more "featureless", easier to maintain, and easier to hack. +

+

+ The Featureless Make, also called Fake, provides two primary ways to compile C, C++, and possibly other compiled languages: +

+
    +
  • Using the "build" command.
  • +
  • Using the "make" command.
  • +
+

+ The build command is as simple as it can be and follows a Featureless Settings Specification (FSS).
+ The make command (and its respective fakefile) provides a more advanced interface for handling complex build processes or compiling languages other than C/C++. +

+

+ The build command (and subsequently the make command) currently provide some hard coded program settings, such as the indexer "ar" runs ar rcs.
+ Eventually such things will be expanded into an FSS setting and made customizable. +

+

+ Both the build and make commands support a small subset of make and autoconf functionality to make transitioning easier or make it easy to work alongside make and autoconf. +

+

+ To help with understanding and using the Featureless Make program, fully functional example build settings and fakefiles are created for the program bzip (specifically version 1.0.8): +

+ +

+ There is also a fakefile pre-configured to run GNU Make within itself to compile the Linux kernel fom source: +

+ +

+ Bzip2 may be found here: +

+ +
+
+ +
+
+

Firewall

+
+
+

+ This is one of the earliest proof of concept and functional example of the FLL library.
+ Now it is currently outdated, but it still remains operational as an iptables wrapper.
+ This program is actively used on the Turtle Kevux distribution.
+ This requires iptables to be installed and executable. +

+
+
+ +
+
+

FSS Identify

+
+
+

+ This is a program reading a file and determining what Featureless Settings Specification.
+ This only detects files that provide an FSS header. +

+
+
+ +
+
+

FSS Basic Read

+
+
+

+ This is a program implementing the Featureless Settings Specification FSS-0000 (Basic).
+ This performs read operations related to the FSS-0000 (Basic) standard. +

+
+
+ +
+
+

FSS Basic Write

+
+
+

+ This is a program implementing the Featureless Settings Specification FSS-0000 (Basic).
+ This performs write operations related to the FSS-0002 (Basic) standard. +

+
+
+ +
+
+

FSS Basic List Read

+
+
+

+ This is a program implementing the Featureless Settings Specification FSS-0002 (Basic List).
+ This performs read operations related to the FSS-0002 (Basic List) standard. +

+
+
+ +
+
+

FSS Basic List Write

+
+
+

+ This is a program implementing the Featureless Settings Specification FSS-0002 (Basic List).
+ This performs write operations related to the FSS-0002 (Basic List) standard. +

+
+
+ +
+
+

FSS Embedded List Read

+
+
+

+ This is a program implementing the Featureless Settings Specification FSS-0008 (Embedded List).
+ This performs read operations related to the FSS-0008 (Embedded List) standard. +

+
+
+ +
+
+

FSS Embedded List Write

+
+
+

+ This is a program implementing the Featureless Settings Specification FSS-0008 (Embedded List).
+ This performs write operations related to the FSS-0008 (Embedded List) standard. +

+
+
+ +
+
+

FSS Extended Read

+
+
+

+ This is a program implementing the Featureless Settings Specification FSS-0001 (Extended).
+ This performs read operations related to the FSS-0001 (Extended) standard. +

+
+
+ +
+
+

FSS Extended Write

+
+
+

+ This is a program implementing the Featureless Settings Specification FSS-0001 (Extended).
+ This performs write operations related to the FSS-0001 (Extended) standard. +

+
+
+ +
+
+

FSS Extended List Read

+
+
+

+ This is a program implementing the Featureless Settings Specification FSS-0003 (Extended List).
+ This performs read operations related to the FSS-0003 (Extended List) standard. +

+
+
+ +
+
+

FSS Extended List Write

+
+
+

+ This is a program implementing the Featureless Settings Specification FSS-0003 (Extended List).
+ This performs write operations related to the FSS-0003 (Extended List) standard. +

+
+
+ +
+
+

FSS Payload Read

+
+
+

+ This is a program implementing the Featureless Settings Specification FSS-000E (Payload).
+ This performs read operations related to the FSS-000E (Payload) standard.
+

+

+ The FSS-000E (Payload) is focused on network communication and is intended to be used inside a network packet.
+ This program can be used to manually read a network packet or data from the network. +

+
+
+ +
+
+

FSS Payload Write

+
+
+

+ This is a program implementing the Featureless Settings Specification FSS-000E (Payload).
+ This performs write operations related to the FSS-000E (Payload) standard.
+

+

+ The FSS-000E (Payload) is focused on network communication and is intended to be used inside a network packet.
+ This program can be used to manually write the payload portion of a network packet. +

+
+
+ +
+
+

FSS Status Code

+
+
+

+ This program is designed to interpret status codes returned by any FSS program.
+ The status codes are converted to or from a code and a label. +

+

+ This program handles more status codes that the status_code program. +

+
+
+ +
+
+

Status Code

+
+
+

+ This program is designed to interpret status codes returned by any FLL based program.
+ The status codes are converted to or from a code and a label. +

+

+ This program specifically handles only the core status codes provided by the FLL.
+ Other programs that utilize custom status codes should provide their own implementation of this program, such as is done with the FSS Status Code program. +

+
+
+ +
+
+

IKI Read

+
+
+

+ Similar to the FSS Read programs, this is a program implementing the Featureless Settings Specification IKI-0000 (Unrestricted).
+ This performs read operations related to the Unrestricted IKI standard (IKI-0000).
+

+

+ The IKI settings specification plays on how it is simpler than a Wiki syntax.
+ The IKI could be used for anything from e-mails and text-messages to word-processors.
+ The goal with IKI is to be very easily readably by a human, such as: iki:"example" or url:"https://sourceforge.net/projects/fll/". +

+

+ This program is a swiss army knife for reading files that contain IKI syntax. +

+
+
+ +
+
+

IKI Write

+
+
+

+ Similar to the FSS Write programs, this is a program implementing the Featureless Settings Specification IKI-0000 (Unrestricted).
+ This performs write operations related to the Unrestricted IKI standard (IKI-0000).
+

+

+ The IKI settings specification plays on how it is simpler than a Wiki syntax.
+ The IKI could be used for anything from e-mails and text-messages to word-processors.
+ The goal with IKI is to be very easily readably by a human, such as: iki:"example" or url:"https://sourceforge.net/projects/fll/". +

+

+ This program is a swiss army knife for writing files that contain IKI syntax. +

+
+
+ +
+
+

UTF8

+
+
+

+ A tool to convert one or more UTF-8 characters from the codepoint representation to a binary representation and back. +

+

+ This program can convert complete files into a text file of UTF-8 bytecode values.
+ This program can convert complete files into a text file of space separated codepoint values. +

+
+
+
+
+
+ + diff --git a/sources.html b/sources.html new file mode 100644 index 0000000..8dbb22c --- /dev/null +++ b/sources.html @@ -0,0 +1,162 @@ + + + + Kevux Systems and Software - Source Code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+

Source Code

+
+ +
+
+

Featureless Linux Library

+
+
+

+ The source code for the Featureless Linux Library is released in several locations. + The Featureless Linux Library page contains the full range of links regarding the source code. +

+

+ The following represent the primary source code locations as well as backup locations at external websites: +

+ +
+
+ + + +
+
+

Turtle Kevux Installation Scripts

+
+ +
+

+ The source code for the Turtle Kevux Installation Scripts is provided both as separate downloads and in the DVD-ROM for each individual Turtle Kevux release. There currently is no recent release available. The legacy releases may be found on the distributions page. +

+

+ The following represents the most recently available release: +

+ +
+
+ +
+
+

Kevux Website

+
+ +
+

+ The Kevux Website source code is also available for download. This website is designed to function even when downloaded, extracted, and viewed locally (without a web server hosting it). The downloaded version of this website will not contain the non-website related files nor will it contain the download website file itself. Such links will be broken on the downloaded website source. Check out the licenses page for the license of the source code of this website. +

+

+ The following is the link: +

+ +
+
+
+
+
+ +