diff --git a/docs/cconfig/cconfig.pdf b/docs/cconfig/cconfig.pdf new file mode 100644 index 00000000..a087a0be Binary files /dev/null and b/docs/cconfig/cconfig.pdf differ diff --git a/docs/cconfig/cconfig.tex b/docs/cconfig/cconfig.tex new file mode 100644 index 00000000..aee9d5d3 --- /dev/null +++ b/docs/cconfig/cconfig.tex @@ -0,0 +1,245 @@ +% ---------------------------------------------------------------------------- +% cconfig +% ---------------------------------------------------------------------------- +\documentclass[11pt,a4paper]{article} +\usepackage[latin1]{inputenc} % Ascii-Format dieses Dokuments +\usepackage{longtable} % lange Tabellen +\usepackage[dvips]{epsfig} +\usepackage{fancyhdr} +\pagestyle{fancy} +\fancyhead[R]{Nico Schottelius} +\fancyhead[L]{cconfig} +\renewcommand{\headrulewidth}{0.4pt} +% ---------------------------------------------------------------------------- +\newcommand{\cemail}{nico-linux-cconfig ((at)) schottelius.org} +% ---------------------------------------------------------------------------- +\begin{document} +\title{cconfig 0.1} +\date{2005-08-28} +\author{Nico Schottelius (\cemail)} +% ---------------------------------------------------------------------------- +% Title +% ---------------------------------------------------------------------------- +\maketitle +\newpage +% ---------------------------------------------------------------------------- +% Inhaltsverzeichnis +% ---------------------------------------------------------------------------- +\tableofcontents +\newpage +% ---------------------------------------------------------------------------- +\section{Introduction} +cconfig is a proposal for configurations on Unix-alike +systems\footnote{In fact it can be used on any system, which +fits the requirements. See \ref{requirements}, \pageref{requirements} for more +information}. This includes, but is not limited to services, packages, +user settings or the system configuration. cconfig main idea is +\begin{itemize} +\item to simplify the layout of configurations +\item to make it easier to configure +\item to allow smooth editing from automatically running programs, +\item thus to avoid parsing where possible, +\item to use the available resources (libraries, functions, ...) +\item and to prevent doubled implementations. +\end{itemize} +% ---------------------------------------------------------------------------- +\section{Layout} +Every cconfig starts below a given directory. This directory +should be named after the process using the configuration +(auth, cinit, mini-lpd, yourutils) and be put under the +appropriate configuration directory (/etc, /usr/packages/yourutil/etc, ...). +A cconfig consists of objects and attributes. +% ---------------------------------------------------------------------------- +\subsection{Objects} +An object is a subdirectory below your configuration directory. +An object can also be a subobject, means a subdirectory of a +directory (this may be continued as deep as you +need\footnote{Have a look at the portability issue, \ref{port-dir}, +page \pageref{port-dir}.}. +% ---------------------------------------------------------------------------- +\subsection{Attributes} +Attributes describe a specific configuration option. +They may exist directly below the configuration directory or below objects. +% ---------------------------------------------------------------------------- +\subsection{Links} +With links you can reuse attributes or objects under a different name +or at a different location\footnote{Have a look at the portability issue, +\ref{port-links}, page \pageref{port-links}.}. +% ---------------------------------------------------------------------------- +\section{Portability} +\label{requirements} +cconfig should in general be portable between Unix-systems, still +there \textit{can} be problems exchanging cconfig data. To prevent +them, take care of the following sections. +% ---------------------------------------------------------------------------- +\subsection{Exchanging} +Transferring a cconfig should be done encapsulated in a tar\cite{tar} archive. +Tar saves the most important information (date, rights, names, ...) +and is available on every Unix-system\footnote{As of the current date +tar seems \textbf{not} to be able to save ACLs (access control lists).}. +If the configuration is very big, consider compressing it with bzip2\cite{bzip2}. +% ---------------------------------------------------------------------------- +\subsection{File names} +The file- and directory names and the content of the files should either be +\begin{itemize} +\item plain ASCII +\item or UTF-8\cite{utf8} +\end{itemize} +Currently there is no specification, that specifies that a filesystem +must support UTF-8, but practically most modern systems do have +UTF-8 support\footnote{Reiserfs, ext2, ext3, xfs should work fine, jfs +is reported to had problems with some characters.}. +% ---------------------------------------------------------------------------- +\subsection{File contents} +The same rules as in "`File names"' apply. +% ---------------------------------------------------------------------------- +\subsection{Using (symbolic) links (absolute and relative)} +\label{port-links} +Hard links are not a problem, because when transferring the data they look +as different files, tar will not see the difference between a totally +different file and a hard link. + +When using symbolic links one has to distinguish between absolute +and relative links. Using a symbolic link can be a problem in general, if +you link outside of the configuration directory. If you link to other +files or directories in the configuration directory you should prefer +relative links. When using absolute links the linked files +may be non-existent, when using relative links to files outside +the files may be unreachable, because the cconfig is extracted +below a different hierarchy position. + +Some operating system implement links differently, you need +to have a tool, which converts standard links (as used on POSIX +systems) to those used on other system and the other way +round\footnote{Those systems are most likely \textbf{not} Unix-alike and +have a general different design with complex and broken registries.}. +% ---------------------------------------------------------------------------- +\subsection{Quantity of objects} +\label{port-dir} +Some filesystems limit the count of directories (how deep directories +may be nested). For normal configurations you'll never reach this +limit\footnote{Please report if you ever reach this limit on a filesystem, +I would be interested in how deep the limit is. Currently one person +reported that after 125 subdirectories the limit is reached in the +operating system with the blue screen.}. +% ---------------------------------------------------------------------------- +\section{Examples} +So far said, let us see some examples after the theoretic part. +% ---------------------------------------------------------------------------- +\subsection{printer daemon (mini-lpd)} +mini-lpd is a small, non-queueing lpd implementation. It uses +\verb=/etc/mini-lpd= as its configuration directory. Every directory +below is the name of a queue: +\begin{verbatim} +[15:09] hydrogenium:~# ls -l /etc/mini-lpd +total 0 +drwx------ 2 root root 6 Aug 28 15:09 lp0 +drwx------ 2 root root 6 Aug 28 15:09 lp1 +\end{verbatim} +Those "`objects"' (directories) contain an attribute "`device"', which +is where the mini-lpd writes the incoming data to: + +\begin{verbatim} +[15:10] hydrogenium:~# ls -l /etc/mini-lpd/lp* +/etc/mini-lpd/lp0: +total 0 +lrwxrwxrwx 1 root root 9 Aug 28 15:10 device -> /dev/null + +/etc/mini-lpd/lp1: +total 0 +lrwxrwxrwx 1 root root 8 Aug 28 15:10 device -> /dev/lp0 +\end{verbatim} + +You could add other attributes like "`filter"' (unsupported currently), which +could be a link to a program filtering the input before mini-lpd +would write it to the device. +% ---------------------------------------------------------------------------- +\subsection{Samba} +Samba\cite{samba} is the well-known Unix SMB server. It exists and +does \textbf{not} use cconfig for its configuration, but this describes +how it could: +"`/etc/samba"' is currently the configuration directory. Instead of +the smb.conf you would have the object "`config"'. Bool +variables\footnote{Those which can either be TRUE or FALSE.} could simply +be represented by "`file exists"' (true) or "`file does not exist"'. +Variables with text could be realised with writing the text into the file: +"`/etc/samba/config/workgroup"' could contain "`cworkgroup"'. +Shares could be objects below "`/etc/samba/shares"': +"`/etc/samba/shares/cdrom"' could contain a file name "`path"' which links +to the real path, a file "`groups"' which would contain a \verb=\n= seperated +list of groups which may access this share. +% ---------------------------------------------------------------------------- +\subsection{init system (cinit)} +Cinit\cite{cinit} is a fast init system, which uses cconfig. +"`/etc/cinit"' is its basic configuration directory. Below that directory +exist the basic configuration: +\begin{verbatim} +wasserstoff# ls -l /etc/cinit +total 8 +drwxr-xr-x 10 root root 4096 Aug 20 20:55 getty +drwxr-xr-x 3 root root 56 Aug 24 22:04 init +drwxr-xr-x 2 root root 1 Aug 20 20:38 local-services +drwxr-xr-x 5 root root 32 Aug 24 22:14 local-tuning +drwxr-xr-x 10 root root 72 Aug 24 06:40 mount +drwxr-xr-x 7 root root 48 Aug 28 13:57 network +drwxr-xr-x 4 root root 16 Aug 20 20:51 remote-services +drwxr-xr-t 2 root root 60 Aug 28 14:00 tmp +\end{verbatim} +"`/etc/cinit/init"' is the first service cinit normally boots, +from there it has dependencies to other services: +\begin{verbatim} +wasserstoff# ls -l /etc/cinit/init/* +lrwxrwxrwx 1 root root 9 Aug 20 20:43 /etc/cinit/init/on -> /bin/echo +-rw-r--r-- 1 root root 22 Aug 20 20:43 /etc/cinit/init/on.params + +/etc/cinit/init/wants: +total 0 +lrwxrwxrwx 1 root root 12 Aug 20 20:43 getty -> ../../getty/ +lrwxrwxrwx 1 root root 21 Aug 20 20:51 local-services -> ../../local-services/ +lrwxrwxrwx 1 root root 19 Aug 20 20:42 local-tuning -> ../../local-tuning/ +lrwxrwxrwx 1 root root 12 Aug 20 20:51 mount -> ../../mount/ +lrwxrwxrwx 1 root root 14 Aug 20 20:51 network -> ../../network/ +lrwxrwxrwx 1 root root 22 Aug 20 20:51 remote-services -> ../../remote-services/ +\end{verbatim} +The "`wants"' describe soft-dependencies, "`on"' specifies what to start +and "`on.params"' are the parameters to pass. +% ---------------------------------------------------------------------------- +\section{Problems} +cconfig is not a standard currently. +No tools exists to convert to other formats like XML. +There is no description language (like DTD or XSLT for XML). +The portability is ensured between most Unices, but Win32 will +most likely be broken as long as nobody writes a "`cconfigtar2win32fs"' +convert tool. +% ---------------------------------------------------------------------------- +\section{Personal statement} +I wrote this because I think configuring things this way is very logic +and helps to intuitively use your system. Furthermore it is really +easy to see what is configured (\verb=find /the/cconfig/dir=). I implemented +variants of cconfig in cinit\cite{cinit} and mini-lpd\cite{mini-lpd}. +Many people I know, who use xml\cite{xml} and have problems, because +the parser is too slow, were very happy when I told them about cconfig. +I hope you can also benefit from it. I would really like to hear some +feedback from you at \cemail. +% ---------------------------------------------------------------------------- +\appendix +\begin{thebibliography}{666} +\bibitem{posix} Posix and SUS;\\ +\verb=http://www.opengroup.org/platform/single_unix_specification/= +\bibitem{cinit} cinit;\\ +\verb=http://linux.schottelius.org/cinit/= +\bibitem{utf8} UTF-8;\\ +\verb=http://www.utf-8.com/=;\\ +\verb=http://www.cl.cam.ac.uk/~mgk25/unicode.html= +\bibitem{mini-lpd} mini-lpd;\\ +\verb=http://linux.schottelius.org/mini-lpd/= +\bibitem{tar} tar;\\ +\verb=http%3A//www.gnu.org/software/tar/tar.html= +\bibitem{bzip2} bzip2;\\ +\verb=http://www.bzip.org/= +\bibitem{samba} Samba;\\ +\verb=http://www.samba.org/= +\bibitem{xml} XML;\\ +\verb=http://www.w3.org/XML/= +\end{thebibliography} +\end{document} diff --git a/docs/cconfig/cconfig/WARNINGS b/docs/cconfig/cconfig/WARNINGS new file mode 100755 index 00000000..2cecb6be --- /dev/null +++ b/docs/cconfig/cconfig/WARNINGS @@ -0,0 +1 @@ +No implementation found for style `fancyhdr' diff --git a/docs/cconfig/cconfig/cconfig.css b/docs/cconfig/cconfig/cconfig.css new file mode 100755 index 00000000..3b8acf62 --- /dev/null +++ b/docs/cconfig/cconfig/cconfig.css @@ -0,0 +1,35 @@ +/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ +.MATH { font-family: "Century Schoolbook", serif; } +.MATH I { font-family: "Century Schoolbook", serif; font-style: italic } +.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } + +/* implement both fixed-size and relative sizes */ +SMALL.XTINY { font-size : xx-small } +SMALL.TINY { font-size : x-small } +SMALL.SCRIPTSIZE { font-size : smaller } +SMALL.FOOTNOTESIZE { font-size : small } +SMALL.SMALL { } +BIG.LARGE { } +BIG.XLARGE { font-size : large } +BIG.XXLARGE { font-size : x-large } +BIG.HUGE { font-size : larger } +BIG.XHUGE { font-size : xx-large } + +/* heading styles */ +H1 { } +H2 { } +H3 { } +H4 { } +H5 { } + +/* mathematics styles */ +DIV.displaymath { } /* math displays */ +TD.eqno { } /* equation-number cells */ + + +/* document-specific styles come next */ +DIV.navigation { } +PRE.preform { } +SPAN.textbf { font-weight: bold } +SPAN.arabic { } +SPAN.textit { font-style: italic } diff --git a/docs/cconfig/cconfig/cconfig.html b/docs/cconfig/cconfig/cconfig.html new file mode 100755 index 00000000..24ad30cf --- /dev/null +++ b/docs/cconfig/cconfig/cconfig.html @@ -0,0 +1,114 @@ + + + + + +cconfig 0.1 + + + + + + + + + + + + + + + + + + + +

cconfig 0.1

+
+ +

Nico Schottelius (nico-linux-cconfig ((at)) schottelius.org)

+

2005-08-28

+
+ +

+ + + + + +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/contents.png b/docs/cconfig/cconfig/contents.png new file mode 100755 index 00000000..0c752c66 Binary files /dev/null and b/docs/cconfig/cconfig/contents.png differ diff --git a/docs/cconfig/cconfig/crossref.png b/docs/cconfig/cconfig/crossref.png new file mode 100755 index 00000000..7dd2dddf Binary files /dev/null and b/docs/cconfig/cconfig/crossref.png differ diff --git a/docs/cconfig/cconfig/footnode.html b/docs/cconfig/cconfig/footnode.html new file mode 100755 index 00000000..a7948984 --- /dev/null +++ b/docs/cconfig/cconfig/footnode.html @@ -0,0 +1,334 @@ + + + + + +Footnotes + + + + + + + + + + + + + + + + + +
+
... +systems1
+
In fact it can be used on any system, which +fits the requirements. See 3, [*] for more +information + +
.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+
+
+
... +need2
+
Have a look at the portability issue, 3.5, +page [*]. + +
.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+
+
+
... location3
+
Have a look at the portability issue, +3.4, page [*]. + +
.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+
+
+
... Unix-system4
+
As of the current date +tar seems not to be able to save ACLs (access control lists). + +
.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+
+
+
... support5
+
Reiserfs, ext2, ext3, xfs should work fine, jfs +is reported to had problems with some characters. + +
.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+
+
+
... +round6
+
Those systems are most likely not Unix-alike and +have a general different design with complex and broken registries. + +
.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+
+
+
... +limit7
+
Please report if you ever reach this limit on a filesystem, +I would be interested in how deep the limit is. Currently one person +reported that after 125 subdirectories the limit is reached in the +operating system with the blue screen. + +
.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+
+
+
... +variables8
+
Those which can either be TRUE or FALSE. + +
.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+
+
+
+ + diff --git a/docs/cconfig/cconfig/index.html b/docs/cconfig/cconfig/index.html new file mode 100755 index 00000000..24ad30cf --- /dev/null +++ b/docs/cconfig/cconfig/index.html @@ -0,0 +1,114 @@ + + + + + +cconfig 0.1 + + + + + + + + + + + + + + + + + + + +

cconfig 0.1

+
+ +

Nico Schottelius (nico-linux-cconfig ((at)) schottelius.org)

+

2005-08-28

+
+ +

+ + + + + +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/internals.pl b/docs/cconfig/cconfig/internals.pl new file mode 100755 index 00000000..0ba147ef --- /dev/null +++ b/docs/cconfig/cconfig/internals.pl @@ -0,0 +1,50 @@ +# LaTeX2HTML 2002-2-1 (1.71) +# Associate internals original text with physical files. + + +$key = q/cite_bzip2/; +$ref_files{$key} = "$dir".q|node19.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_cinit/; +$ref_files{$key} = "$dir".q|node19.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_xml/; +$ref_files{$key} = "$dir".q|node19.html|; +$noresave{$key} = "$nosave"; + +$key = q/requirements/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + +$key = q/port-links/; +$ref_files{$key} = "$dir".q|node11.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_posix/; +$ref_files{$key} = "$dir".q|node19.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_utf8/; +$ref_files{$key} = "$dir".q|node19.html|; +$noresave{$key} = "$nosave"; + +$key = q/port-dir/; +$ref_files{$key} = "$dir".q|node12.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_samba/; +$ref_files{$key} = "$dir".q|node19.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_mini-lpd/; +$ref_files{$key} = "$dir".q|node19.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_tar/; +$ref_files{$key} = "$dir".q|node19.html|; +$noresave{$key} = "$nosave"; + +1; + diff --git a/docs/cconfig/cconfig/labels.pl b/docs/cconfig/cconfig/labels.pl new file mode 100755 index 00000000..5f1f9ae7 --- /dev/null +++ b/docs/cconfig/cconfig/labels.pl @@ -0,0 +1,69 @@ +# LaTeX2HTML 2002-2-1 (1.71) +# Associate labels original text with physical files. + + +$key = q/cite_bzip2/; +$external_labels{$key} = "$URL/" . q|node19.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_cinit/; +$external_labels{$key} = "$URL/" . q|node19.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_xml/; +$external_labels{$key} = "$URL/" . q|node19.html|; +$noresave{$key} = "$nosave"; + +$key = q/requirements/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + +$key = q/port-links/; +$external_labels{$key} = "$URL/" . q|node11.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_posix/; +$external_labels{$key} = "$URL/" . q|node19.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_utf8/; +$external_labels{$key} = "$URL/" . q|node19.html|; +$noresave{$key} = "$nosave"; + +$key = q/port-dir/; +$external_labels{$key} = "$URL/" . q|node12.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_samba/; +$external_labels{$key} = "$URL/" . q|node19.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_mini-lpd/; +$external_labels{$key} = "$URL/" . q|node19.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_tar/; +$external_labels{$key} = "$URL/" . q|node19.html|; +$noresave{$key} = "$nosave"; + +1; + + +# LaTeX2HTML 2002-2-1 (1.71) +# labels from external_latex_labels array. + + +$key = q/port-dir/; +$external_latex_labels{$key} = q|3.5|; +$noresave{$key} = "$nosave"; + +$key = q/requirements/; +$external_latex_labels{$key} = q|3|; +$noresave{$key} = "$nosave"; + +$key = q/port-links/; +$external_latex_labels{$key} = q|3.4|; +$noresave{$key} = "$nosave"; + +1; + diff --git a/docs/cconfig/cconfig/next.png b/docs/cconfig/cconfig/next.png new file mode 100755 index 00000000..1628652a Binary files /dev/null and b/docs/cconfig/cconfig/next.png differ diff --git a/docs/cconfig/cconfig/next_g.png b/docs/cconfig/cconfig/next_g.png new file mode 100755 index 00000000..9d3f5912 Binary files /dev/null and b/docs/cconfig/cconfig/next_g.png differ diff --git a/docs/cconfig/cconfig/node1.html b/docs/cconfig/cconfig/node1.html new file mode 100755 index 00000000..bdc4b1f4 --- /dev/null +++ b/docs/cconfig/cconfig/node1.html @@ -0,0 +1,111 @@ + + + + + +Contents + + + + + + + + + + + + + + + + + + + + + +
+ +

+Contents +

+ + + + +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node10.html b/docs/cconfig/cconfig/node10.html new file mode 100755 index 00000000..cec36134 --- /dev/null +++ b/docs/cconfig/cconfig/node10.html @@ -0,0 +1,66 @@ + + + + + +File contents + + + + + + + + + + + + + + + + + + + + + + +

+File contents +

+The same rules as in "`File names"' apply. +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node11.html b/docs/cconfig/cconfig/node11.html new file mode 100755 index 00000000..7c66b345 --- /dev/null +++ b/docs/cconfig/cconfig/node11.html @@ -0,0 +1,87 @@ + + + + + +Using (symbolic) links (absolute and relative) + + + + + + + + + + + + + + + + + + + + + + +

+ +
+Using (symbolic) links (absolute and relative) +

+Hard links are not a problem, because when transferring the data they look +as different files, tar will not see the difference between a totally +different file and a hard link. + +

+When using symbolic links one has to distinguish between absolute +and relative links. Using a symbolic link can be a problem in general, if +you link outside of the configuration directory. If you link to other +files or directories in the configuration directory you should prefer +relative links. When using absolute links the linked files +may be non-existent, when using relative links to files outside +the files may be unreachable, because the cconfig is extracted +below a different hierarchy position. + +

+Some operating system implement links differently, you need +to have a tool, which converts standard links (as used on POSIX +systems) to those used on other system and the other way +round6. +


+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node12.html b/docs/cconfig/cconfig/node12.html new file mode 100755 index 00000000..83759067 --- /dev/null +++ b/docs/cconfig/cconfig/node12.html @@ -0,0 +1,70 @@ + + + + + +Quantity of objects + + + + + + + + + + + + + + + + + + + + + +

+ +
+Quantity of objects +

+Some filesystems limit the count of directories (how deep directories +may be nested). For normal configurations you'll never reach this +limit7. +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node13.html b/docs/cconfig/cconfig/node13.html new file mode 100755 index 00000000..5bc32d78 --- /dev/null +++ b/docs/cconfig/cconfig/node13.html @@ -0,0 +1,79 @@ + + + + + +Examples + + + + + + + + + + + + + + + + + + + + + + +

+Examples +

+So far said, let us see some examples after the theoretic part. +

+ +Subsections + + + +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node14.html b/docs/cconfig/cconfig/node14.html new file mode 100755 index 00000000..cf74d028 --- /dev/null +++ b/docs/cconfig/cconfig/node14.html @@ -0,0 +1,93 @@ + + + + + +printer daemon (mini-lpd) + + + + + + + + + + + + + + + + + + + + + + +

+printer daemon (mini-lpd) +

+mini-lpd is a small, non-queueing lpd implementation. It uses +/etc/mini-lpd as its configuration directory. Every directory +below is the name of a queue: +
+[15:09] hydrogenium:~# ls -l /etc/mini-lpd 
+total 0
+drwx------  2 root root 6 Aug 28 15:09 lp0
+drwx------  2 root root 6 Aug 28 15:09 lp1
+
+Those "`objects"' (directories) contain an attribute "`device"', which +is where the mini-lpd writes the incoming data to: + +

+

+[15:10] hydrogenium:~# ls -l /etc/mini-lpd/lp*
+/etc/mini-lpd/lp0:
+total 0
+lrwxrwxrwx  1 root root 9 Aug 28 15:10 device -> /dev/null
+
+/etc/mini-lpd/lp1:
+total 0
+lrwxrwxrwx  1 root root 8 Aug 28 15:10 device -> /dev/lp0
+
+ +

+You could add other attributes like "`filter"' (unsupported currently), which +could be a link to a program filtering the input before mini-lpd +would write it to the device. +


+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node15.html b/docs/cconfig/cconfig/node15.html new file mode 100755 index 00000000..56f7d0fc --- /dev/null +++ b/docs/cconfig/cconfig/node15.html @@ -0,0 +1,80 @@ + + + + + +Samba + + + + + + + + + + + + + + + + + + + + + + +

+Samba +

+Samba[7] is the well-known Unix SMB server. It exists and +does not use cconfig for its configuration, but this describes +how it could: +"`/etc/samba"' is currently the configuration directory. Instead of +the smb.conf you would have the object "`config"'. Bool +variables8 could simply +be represented by "`file exists"' (true) or "`file does not exist"'. +Variables with text could be realised with writing the text into the file: +"`/etc/samba/config/workgroup"' could contain "`cworkgroup"'. +Shares could be objects below "`/etc/samba/shares"': +"`/etc/samba/shares/cdrom"' could contain a file name "`path"' which links +to the real path, a file "`groups"' which would contain a \n seperated +list of groups which may access this share. +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node16.html b/docs/cconfig/cconfig/node16.html new file mode 100755 index 00000000..4170df47 --- /dev/null +++ b/docs/cconfig/cconfig/node16.html @@ -0,0 +1,98 @@ + + + + + +init system (cinit) + + + + + + + + + + + + + + + + + + + + + +

+init system (cinit) +

+Cinit[2] is a fast init system, which uses cconfig. +"`/etc/cinit"' is its basic configuration directory. Below that directory +exist the basic configuration: +
+wasserstoff# ls -l /etc/cinit         
+total 8
+drwxr-xr-x  10 root root 4096 Aug 20 20:55 getty
+drwxr-xr-x   3 root root   56 Aug 24 22:04 init
+drwxr-xr-x   2 root root    1 Aug 20 20:38 local-services
+drwxr-xr-x   5 root root   32 Aug 24 22:14 local-tuning
+drwxr-xr-x  10 root root   72 Aug 24 06:40 mount
+drwxr-xr-x   7 root root   48 Aug 28 13:57 network
+drwxr-xr-x   4 root root   16 Aug 20 20:51 remote-services
+drwxr-xr-t   2 root root   60 Aug 28 14:00 tmp
+
+"`/etc/cinit/init"' is the first service cinit normally boots, +from there it has dependencies to other services: +
+wasserstoff# ls -l /etc/cinit/init/*
+lrwxrwxrwx  1 root root  9 Aug 20 20:43 /etc/cinit/init/on -> /bin/echo
+-rw-r--r--  1 root root 22 Aug 20 20:43 /etc/cinit/init/on.params
+
+/etc/cinit/init/wants:
+total 0
+lrwxrwxrwx  1 root root 12 Aug 20 20:43 getty -> ../../getty/
+lrwxrwxrwx  1 root root 21 Aug 20 20:51 local-services -> ../../local-services/
+lrwxrwxrwx  1 root root 19 Aug 20 20:42 local-tuning -> ../../local-tuning/
+lrwxrwxrwx  1 root root 12 Aug 20 20:51 mount -> ../../mount/
+lrwxrwxrwx  1 root root 14 Aug 20 20:51 network -> ../../network/
+lrwxrwxrwx  1 root root 22 Aug 20 20:51 remote-services -> ../../remote-services/
+
+The "`wants"' describe soft-dependencies, "`on"' specifies what to start +and "`on.params"' are the parameters to pass. +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node17.html b/docs/cconfig/cconfig/node17.html new file mode 100755 index 00000000..b2d9b50c --- /dev/null +++ b/docs/cconfig/cconfig/node17.html @@ -0,0 +1,71 @@ + + + + + +Problems + + + + + + + + + + + + + + + + + + + + + + +

+Problems +

+cconfig is not a standard currently. +No tools exists to convert to other formats like XML. +There is no description language (like DTD or XSLT for XML). +The portability is ensured between most Unices, but Win32 will +most likely be broken as long as nobody writes a "`cconfigtar2win32fs"' +convert tool. +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node18.html b/docs/cconfig/cconfig/node18.html new file mode 100755 index 00000000..977968ce --- /dev/null +++ b/docs/cconfig/cconfig/node18.html @@ -0,0 +1,77 @@ + + + + + +Personal statement + + + + + + + + + + + + + + + + + + + + + + +

+Personal statement +

+I wrote this because I think configuring things this way is very logic +and helps to intuitively use your system. Furthermore it is really +easy to see what is configured (find /the/cconfig/dir). I implemented +variants of cconfig in cinit[2] and mini-lpd[4]. +Many people I know, who use xml[8] and have problems, because +the parser is too slow, were very happy when I told them about cconfig. +I hope you can also benefit from it. I would really like to hear some +feedback from you at nico-linux-cconfig ((at)) schottelius.org. + +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node19.html b/docs/cconfig/cconfig/node19.html new file mode 100755 index 00000000..d60d4fbf --- /dev/null +++ b/docs/cconfig/cconfig/node19.html @@ -0,0 +1,88 @@ + + + + + +Bibliography + + + + + + + + + + + + + + + + + + + + + + +

+Bibliography +

1 +
Posix and SUS; +
http://www.opengroup.org/platform/single_unix_specification/ +

2 +
cinit; +
http://linux.schottelius.org/cinit/ +

3 +
UTF-8; +
http://www.utf-8.com/; +
http://www.cl.cam.ac.uk/~mgk25/unicode.html +

4 +
mini-lpd; +
http://linux.schottelius.org/mini-lpd/ +

5 +
tar; +
http%3A//www.gnu.org/software/tar/tar.html +

6 +
bzip2; +
http://www.bzip.org/ +

7 +
Samba; +
http://www.samba.org/ +

8 +
XML; +
http://www.w3.org/XML/ +


+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node2.html b/docs/cconfig/cconfig/node2.html new file mode 100755 index 00000000..951219a7 --- /dev/null +++ b/docs/cconfig/cconfig/node2.html @@ -0,0 +1,84 @@ + + + + + +Introduction + + + + + + + + + + + + + + + + + + + + + + +

+Introduction +

+cconfig is a proposal for configurations on Unix-alike +systems1. This includes, but is not limited to services, packages, +user settings or the system configuration. cconfig main idea is + + +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node20.html b/docs/cconfig/cconfig/node20.html new file mode 100755 index 00000000..737a6c30 --- /dev/null +++ b/docs/cconfig/cconfig/node20.html @@ -0,0 +1,75 @@ + + + + + +About this document ... + + + + + + + + + + + + + + + + + + + + +

+About this document ... +

+ cconfig 0.1

+This document was generated using the +LaTeX2HTML translator Version 2002-2-1 (1.71) +

+Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
+Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

+The command line arguments were:
+ latex2html -local_icons cconfig.tex +

+The translation was initiated by Nico on 2005-08-28 +


+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node3.html b/docs/cconfig/cconfig/node3.html new file mode 100755 index 00000000..c79ee789 --- /dev/null +++ b/docs/cconfig/cconfig/node3.html @@ -0,0 +1,83 @@ + + + + + +Layout + + + + + + + + + + + + + + + + + + + + + + +

+Layout +

+Every cconfig starts below a given directory. This directory +should be named after the process using the configuration +(auth, cinit, mini-lpd, yourutils) and be put under the +appropriate configuration directory (/etc, /usr/packages/yourutil/etc, ...). +A cconfig consists of objects and attributes. +

+ +Subsections + + + +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node4.html b/docs/cconfig/cconfig/node4.html new file mode 100755 index 00000000..b7bd2c2f --- /dev/null +++ b/docs/cconfig/cconfig/node4.html @@ -0,0 +1,70 @@ + + + + + +Objects + + + + + + + + + + + + + + + + + + + + + + +

+Objects +

+An object is a subdirectory below your configuration directory. +An object can also be a subobject, means a subdirectory of a +directory (this may be continued as deep as you +need2. +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node5.html b/docs/cconfig/cconfig/node5.html new file mode 100755 index 00000000..544e66be --- /dev/null +++ b/docs/cconfig/cconfig/node5.html @@ -0,0 +1,67 @@ + + + + + +Attributes + + + + + + + + + + + + + + + + + + + + + + +

+Attributes +

+Attributes describe a specific configuration option. +They may exist directly below the configuration directory or below objects. +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node6.html b/docs/cconfig/cconfig/node6.html new file mode 100755 index 00000000..e86ed991 --- /dev/null +++ b/docs/cconfig/cconfig/node6.html @@ -0,0 +1,67 @@ + + + + + +Links + + + + + + + + + + + + + + + + + + + + + +

+Links +

+With links you can reuse attributes or objects under a different name +or at a different location3. +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node7.html b/docs/cconfig/cconfig/node7.html new file mode 100755 index 00000000..8480d520 --- /dev/null +++ b/docs/cconfig/cconfig/node7.html @@ -0,0 +1,87 @@ + + + + + +Portability + + + + + + + + + + + + + + + + + + + + + + +

+ +
+Portability +

+cconfig should in general be portable between Unix-systems, still +there can be problems exchanging cconfig data. To prevent +them, take care of the following sections. +

+ +Subsections + + + +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node8.html b/docs/cconfig/cconfig/node8.html new file mode 100755 index 00000000..cf115319 --- /dev/null +++ b/docs/cconfig/cconfig/node8.html @@ -0,0 +1,72 @@ + + + + + +Exchanging + + + + + + + + + + + + + + + + + + + + + + +

+Exchanging +

+Transferring a cconfig should be done encapsulated in a tar[5] archive. +Tar saves the most important information (date, rights, names, ...) +and is available on every Unix-system4. +If the configuration is very big, consider compressing it with bzip2[6]. +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/node9.html b/docs/cconfig/cconfig/node9.html new file mode 100755 index 00000000..828c15e9 --- /dev/null +++ b/docs/cconfig/cconfig/node9.html @@ -0,0 +1,78 @@ + + + + + +File names + + + + + + + + + + + + + + + + + + + + + + +

+File names +

+The file- and directory names and the content of the files should either be + + +Currently there is no specification, that specifies that a filesystem +must support UTF-8, but practically most modern systems do have +UTF-8 support5. +

+
+Nico +2005-08-28 +
+ + diff --git a/docs/cconfig/cconfig/prev.png b/docs/cconfig/cconfig/prev.png new file mode 100755 index 00000000..e60b8b40 Binary files /dev/null and b/docs/cconfig/cconfig/prev.png differ diff --git a/docs/cconfig/cconfig/prev_g.png b/docs/cconfig/cconfig/prev_g.png new file mode 100755 index 00000000..476d9568 Binary files /dev/null and b/docs/cconfig/cconfig/prev_g.png differ diff --git a/docs/cconfig/cconfig/up.png b/docs/cconfig/cconfig/up.png new file mode 100755 index 00000000..3937e168 Binary files /dev/null and b/docs/cconfig/cconfig/up.png differ diff --git a/docs/cconfig/cconfig/up_g.png b/docs/cconfig/cconfig/up_g.png new file mode 100755 index 00000000..54ceb683 Binary files /dev/null and b/docs/cconfig/cconfig/up_g.png differ