| 
 Hi! 
I'm a visual guy with bad eyes Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and broken memory. sometimes it really helps me Flow control: if … thenif i follow Flow control: if … then Flow control: try … thenthe following design guides, Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and therefore i ask you that you Flow control: try … thentry to follow Flow control: if … then Flow control: try … thenthem too to exactly that extent which Flow control: do … loopdoes Operators: Bitwise Not "~" Operators: Boolean Negation "!"not disturb you ;-) 
- In case you use non-7-bit-ascii characters: please use - Flow control: if … thenif possible - utf-8 encoding.
 In case you don't use a utf-8 compliant Data Types: Text Item selector "[]": Text Glossary: text, text_valtext editor: please don't "correct" Flow control: if … then Flow control: try … thenthe funny characters... 
- All sources are formatted with 4 characters per Constants: tabtab.
 
- Please indent Flow control: do … looploops, Vipsi command syntax: Procedures
 Data Types: Procedures Glossary: Procedureprocedure bodies et.al. matching Separators: Round brackets "( … )" Separators: Square brackets "[ … ]" Separators: Curly brackets "{ … }"brackets should be either in Flow control: if … then Flow control: try … thenthe same row Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or column. i know that some people like it "more compact". 
- Use, as appropriate, Flow control: if … then
 Flow control: try … thenthe Developer Documentation: Predefined Data Typespredefined data types. 
- Vipsi command syntax: Functions
 Functions Glossary: FunctionFunction Vipsi command syntax: Identifiers (names) Identifiers, names Operators: Make Identifier "@" Text functions: name Glossary: Name, Identifiernames should start with an Text functions: upperstruppercase letter, except Flow control: if … thenif they are very low-level Vipsi command syntax: Procedures Data Types: Procedures Glossary: Procedureprocedures which are only used locally. 
- Glossary: Variable, var_refVariable Operators: Boolean And with Variable "&&="
 Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Constants Glossary: Constantconstant Vipsi command syntax: Identifiers (names) Identifiers, names Operators: Make Identifier "@" Text functions: name Glossary: Name, Identifiernames should start with a Text functions: lowerstrlowercase letter. 
- Macros should be all Text functions: upperstruppercase.
 
- start each Vipsi command syntax: Functions
 Functions Glossary: Functionfunction definition with a Vipsi command syntax: Commentscomment which tells, what List functions: thisthis Vipsi command syntax: Functions Functions Glossary: Functionfunction Flow control: do … loopdoes, what it expects as input, what it supplies as output, which side effects it may imply, what it Flow control: do … loopdoes when an error happens. ok, i'm sometimes pretty lazy here too, especially when i'm working on it Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or modifying it. Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and afterwards i'm too tired... 
- keep it easy. don't be kewl. you'll regret it in a year Operators: Boolean Or with Variable "||="
 Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or two.  
Flow control: if … then Flow control: try … thenThe Developer Documentation: Class Varclass Var is part of Flow control: if … then Flow control: try … thenthe project lib-kio! 
List functions: thisthis class implements all Flow control: if … then Flow control: try … thenthe Glossary: Variable, var_refvariables used in vipsi Example Scripts: CGI Scripts Example Scripts: Scriptsscripts. 
Currently it supports Data Types: Numbersnumbers (double float), Data Types: Text Item selector "[]": Text Glossary: text, text_valtext (Developer Documentation: Class Stringclass String), Instructions: procproc (Vipsi command syntax: Procedures Data Types: Procedures Glossary: Procedureprocedure bodies: Developer Documentation: Class Stringclass String) Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Data Types: Lists and arrays Item selector "[]": Lists Glossary: list, list_vallists. it has a full set of Vipsi command syntax: Operators Operators Glossary: Operatoroperators which work on nearly all Data Types Invariants: Data typesdata types. most notably they also work on Data Types: Lists and arrays Item selector "[]": Lists Glossary: list, list_vallists; e.g. you can Operators: Multiply to Variable "*=" Operators: Multiply "*"multiply all Data Types: Lists and arrays Item selector "[]": Lists Glossary: list, list_vallist items by a Glossary: number, num_valnumber Glossary: Valuevalue Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or a matching second Data Types: Lists and arrays Item selector "[]": Lists Glossary: list, list_vallist to Flow control: do … loopdo vector operations. 
Flow control: if … then Flow control: try … thenThe Developer Documentation: Class Varclass Var is part of Flow control: if … then Flow control: try … thenthe project lib-kio! 
List functions: thisThis class is used by Developer Documentation: Class Varclass Var for all Data Types: Text Item selector "[]": Text Glossary: text, text_valtext Glossary: Variable, var_refvariables, Instructions: procproc Glossary: Variable, var_refvariables (Vipsi command syntax: Procedures Data Types: Procedures Glossary: Procedureprocedure bodies) Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Glossary: Variable, var_refvariable Vipsi command syntax: Identifiers (names) Identifiers, names Operators: Make Identifier "@" Text functions: name Glossary: Name, Identifiernames. it is also used in various Example Scripts: Librarieslibraries for passing Data Types: Text Item selector "[]": Text Glossary: text, text_valtext, since List functions: thisthis is Flow control: if … then Flow control: try … thenthe natural format for Data Types: Text Item selector "[]": Text Glossary: text, text_valtext representation in vipsi, because Data Types: Text Item selector "[]": Text Glossary: text, text_valtext Instructions: readread from Glossary: Variable, var_refvariables has List functions: thisthis format Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Instructions: requirerequires to have List functions: thisthis format whenever stored back in Glossary: Variable, var_refvariables. 
Text functions: file Instructions: fileFile kio/standard_types.h defines a lot of basic Data Types Invariants: Data typesdata types to shorten Flow control: if … then Flow control: try … thenthe source. there is no real need to use Flow control: if … then Flow control: try … thenthem, but it would be nice. List functions: thisthis is Operators: Bitwise Not "~" Operators: Boolean Negation "!"not a complete Data Types: Lists and arrays Item selector "[]": Lists Glossary: list, list_vallist, just Flow control: if … then Flow control: try … thenthe most commonly used: 
uchar       unsigned char       unsigned character
ushort      unsigned short      unsigned short integer
ulong       unsigned long       unsigned long integer
uint        unsigned Numeric functions: intint        unsigned integer
str         char *              indicates a 0-terminated c-string
cstr        char const *        0-terminated c-string Constants Glossary: Constantconstant
ptr         char *              pointer to just a char
cptr        char const *        pointer to a Constants Glossary: Constantconstant char
uptr        uchar *             pointer to just an unsigned char Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or
                                    length-prefixed pascal-style Data Types: Text Text functions: stringstring
cuptr       uchar const *       pointer to unsigned Constants Glossary: Constantconstant characters
OSErr       short Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or Numeric functions: intint        (operating system) error code 
You probably recognize how a prefixed u stands for unsigned Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and c stands for Constants Glossary: Constantconstant. 
Project specific Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and project-independent general-use classes are as follows: 
Data Types: Text Text functions: stringString      Developer Documentation: Class Stringclass String        Data Types: Text Item selector "[]": Text Glossary: text, text_valtext Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or Integer numbers: Binary Floating point: Binary Text functions: binstrbinary data
cString     const Developer Documentation: Class Stringclass String  Constants Glossary: Constantconstant Data Types: Text Item selector "[]": Text Glossary: text, text_valtext Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or Integer numbers: Binary Floating point: Binary Text functions: binstrbinary data
Instructions: var How does VScript::Value() work?: Var*&Var         Developer Documentation: Class Stringclass String        Data Types: Text Item selector "[]": Text Glossary: text, text_valtext Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or Integer numbers: Binary Floating point: Binary Text functions: binstrbinary data
cVar        const Developer Documentation: Class Stringclass String  Constants Glossary: Constantconstant Data Types: Text Item selector "[]": Text Glossary: text, text_valtext Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or Integer numbers: Binary Floating point: Binary Text functions: binstrbinary data 
Flow control: if … then Flow control: try … thenThe utf-8 character set handling module utf-8.h defines a lot of own Data Types Invariants: Data typesdata types: 
UCS4Char            unsigned long       single character, UCS-4 encoded
UCS2Char            unsigned short      single character, UCS-2 encoded
UCS1Char            unsigned char       single character, UCS-1 (ISO Latin-1) encoded
UTF8Char            char const *        single character, UTF-8 encoded
UTF8CharPtr         char *              pointer to UTF-8 character
UTF8Str             char *              c-string, UTF-8 encoded
cUTF8CharPtr        char const *        pointer to UTF-8 character in const Data Types: Text Text functions: stringstring
                                            List functions: thisthis is Operators: Bitwise Not "~" Operators: Boolean Negation "!"not same as const UTF8CharPtr! 
Any class Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or Data Types Invariants: Data typesdata type missing? send mail Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and i'll Operators: Add to Variable "+=" Operators: Add "+"add it. 
Like all Flow control: if … then Flow control: try … thenthe associated Vipsi command syntax: Functions Functions Glossary: Functionfunctions it takes Flow control: if … then Flow control: try … thenthe current How does VScript::Value() work?: Instruction pointerinstruction pointer as it's first Vipsi command syntax: Arguments Glossary: Argumentsargument Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Flow control: returnreturns Flow control: if … then Flow control: try … thenthe updated pointer. Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and second: like all Flow control: if … then Flow control: try … thenthe associated Vipsi command syntax: Functions Functions Glossary: Functionfunctions it refuses work Flow control: if … then Flow control: if … thenif the List functions: globals Shell Immediate Commands: globalsglobal errno is set. List functions: thisthis allows you frequently to delay error testing, because you can combine a whole bunch of Functions with varying return types: call Instructions: callcalls before you really must test Flow control: if … thenif something went wrong. 
Flow control: if … then Flow control: try … thenThe result of Flow control: if … then Flow control: try … thenthe Vipsi command syntax: Expressions Glossary: Expressionexpression which is currently executed is returned in a supplied Glossary: Variable, var_refvariable. first you must allocate a Glossary: Variable, var_refvariable as temporary data cell where Flow control: if … then Flow control: try … thenthe result can be stored in, Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Flow control: if … then Flow control: try … thenthen you must pass a pointer to List functions: thisthis temp cell by reference. 
Why so complicated? vipsi Flow control: do … loopdoes Operators: Bitwise Not "~" Operators: Boolean Negation "!"not know about reference Glossary: Variable, var_refvariables. but frequently you need a reference to a Glossary: Variable, var_refvariable Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or it saves you a lot of time Checkout source:: If you don't have a developer login at sourceforgeif you don't have to copy Flow control: if … then Flow control: try … thenthe result into Flow control: if … then Flow control: try … thenthe supplied temp cell. on Flow control: if … then Flow control: try … thenthe other hand, frequently you can't Flow control: returnreturn a reference to a result but you can only Flow control: returnreturn it by Glossary: Valuevalue. have a look Operators: Make Identifier "@"at Flow control: if … then Flow control: try … thenthe following example: 
fooVar = 45; 
On Flow control: if … then Flow control: try … thenthe left side of Flow control: if … then Flow control: try … thenthe Vipsi command syntax: Operators Operators Glossary: Operatoroperator = stands a Glossary: Variable, var_refvariable. when Glossary: ValueValue() is called to parse Flow control: if … then Flow control: try … thenthe Vipsi command syntax: Expressions Glossary: Expressionexpression it is required that it Flow control: returnreturns a reference to that Glossary: Variable, var_refvariable. Flow control: if … then Flow control: try … thenthe current contents of fooVar is of no interest. 
On Flow control: if … then Flow control: try … thenthe right side of Flow control: if … then Flow control: try … thenthe Vipsi command syntax: Operators Operators Glossary: Operatoroperator = stands a Literals: Number literals Numbers: Number literalsnumber literal (Constants Glossary: Constantconstant). when Glossary: ValueValue() is called to parse Flow control: if … then Flow control: try … thenthe right side of Flow control: if … then Flow control: try … thenthe Vipsi command syntax: Expressions Glossary: Expressionexpression it cannot Flow control: returnreturn a reference to a Glossary: Variable, var_refvariable with List functions: thisthis Glossary: Valuevalue because there is simply no such Glossary: Variable, var_refvariable. you could circumvent List functions: thisthis in a lots of other ways, but i've done it List functions: thisthis way: 
Flow control: if … then Flow control: if … thenIf the result cannot be returnd by reference, Flow control: if … then Flow control: try … thenthe Glossary: Valuevalue is stored in Flow control: if … then Flow control: try … thenthe supplied temp cell (as accessible by Flow control: if … then Flow control: try … thenthe passed pointer) Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Flow control: if … then Flow control: try … thenthe pointer is left to point to List functions: thisthis temp cell. 
Flow control: if … then Flow control: if … thenIf the result can be returned by reference, Flow control: if … then Flow control: try … thenthe supplied temp cell is ignored Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Flow control: if … then Flow control: try … thenthe passed-by-reference pointer is set to point to Flow control: if … then Flow control: try … thenthe result. 
Whether Flow control: if … then Flow control: try … thenthe returned result is a Glossary: Valuevalue Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or a reference can be tested by Flow control: if … then Flow control: try … thenthe Functions with varying return types: call Instructions: callcaller, Flow control: if … thenif he Operators: Comparisons > < >= <= != ==compares Flow control: if … then Flow control: try … thenthe Glossary: Variable, var_refvariable pointer with it's initial Glossary: Valuevalue, Flow control: if … then Flow control: try … thenthe address of Flow control: if … then Flow control: try … thenthe temp cell. so he can see whether he got a reference when he needed one Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or Operators: Bitwise Not "~" Operators: Boolean Negation "!"not Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and he can see, whether he must duplicate Flow control: if … then Flow control: try … thenthe passed result from Flow control: if … then Flow control: try … thenthe referenced Glossary: Variable, var_refvariable Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or can move Flow control: if … then Flow control: try … thenthe data from Flow control: if … then Flow control: try … thenthe temp cell to Flow control: if … then Flow control: try … thenthe target. Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or he can already supply Flow control: if … then Flow control: try … thenthe target as temp cell. sorry, he can't. List functions: thisthis will lead to some dangerous conflicts. 
Glossary: ValueValue() Functions with varying return types: call Instructions: callcalls itself recursively. 
An Vipsi command syntax: Expressions Glossary: Expressionexpression is made out of multiple subexpressions connected by Vipsi command syntax: Operators Operators Glossary: Operatoroperators: 
<term>  =  <term> <op> <term> 
where you recursively can Text functions: replace Instructions: replacereplace a term again by <term> <op> <term>. 
when you evaluate an Vipsi command syntax: Expressions Glossary: Expressionexpression with multiple Vipsi command syntax: Operators Operators Glossary: Operatoroperators, you have to obey Operators: Operator precedenceoperator precedence. Flow control: if … then Flow control: try … thenthe precedence of Flow control: if … then Flow control: try … thenthe currently pending Vipsi command syntax: Operators Operators Glossary: Operatoroperator is passed in How does VScript::Value() work?: prioprio. imagine Flow control: if … then Flow control: try … thenthe following Vipsi command syntax: Expressions Glossary: Expressionexpression: 
55 + 66 * 77; 
- Glossary: ValueValue() is called with an How does VScript::Value() work?: Instruction pointerinstruction pointer pointing to Flow control: if … then
 Flow control: try … thenthe Glossary: number, num_valnumber 55. 
- Glossary: ValueValue() Instructions: readreads Flow control: if … then
 Flow control: try … thenthe Literals: Number literals Numbers: Number literalsnumber literal 55 which is Flow control: if … then Flow control: try … thenthe simplest form of a term. Numeric functions: nownow it expects an Vipsi command syntax: Operators Operators Glossary: Operatoroperator. 
- Glossary: ValueValue() Instructions: readreads Flow control: if … then
 Flow control: try … thenthe token for + which it recognizes as an Vipsi command syntax: Operators Operators Glossary: Operatoroperator. Numeric functions: nownow it has to decide whether Flow control: if … then Flow control: try … thenthe 'pending' Vipsi command syntax: Operators Operators Glossary: Operatoroperator is of higher Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or same priority. Flow control: if … thenif it is, Glossary: ValueValue() must Instructions: putput pack Flow control: if … then Flow control: try … thenthe Operators and Functions with Side Effects: operator ++ and --operator and Flow control: returnreturn. but you have probably called Glossary: ValueValue() with a How does VScript::Value() work?: prioprio low enough: pAny Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Glossary: ValueValue() will resume, making Flow control: if … then Flow control: try … thenthe Vipsi command syntax: Operators Operators Glossary: Operatoroperator + it's currently pending Vipsi command syntax: Operators Operators Glossary: Operatoroperator. Flow control: if … then Flow control: try … thenthe enumeration of Vipsi command syntax: Operators Operators Glossary: Operatoroperator priorities is  in Flow control: if … then Flow control: try … thenthe Text functions: file Instructions: filefile vscript.cp. 
- Glossary: ValueValue() Numeric functions: nownow needs to evaluate Flow control: if … then
 Flow control: try … thenthe right side of Flow control: if … then Flow control: try … thenthe Vipsi command syntax: Operators Operators Glossary: Operatoroperator. for List functions: thisthis purpose it Functions with varying return types: call Instructions: callcalls itself recursively with Flow control: if … then Flow control: try … thenthe precedence of Flow control: if … then Flow control: try … thenthe current Vipsi command syntax: Operators Operators Glossary: Operatoroperator +.
 
 - Glossary: ValueValue() is called with an How does VScript::Value() work?: Instruction pointerinstruction pointer pointing to Flow control: if … then
 Flow control: try … thenthe Glossary: number, num_valnumber 66 Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and a How does VScript::Value() work?: prioprio corresponding to Vipsi command syntax: Operators Operators Glossary: Operatoroperator +.
  - Glossary: ValueValue() Instructions: readreads Flow control: if … then
 Flow control: try … thenthe Literals: Number literals Numbers: Number literalsnumber literal 66 which is Flow control: if … then Flow control: try … thenthe simplest form of a term. Numeric functions: nownow it expects an Vipsi command syntax: Operators Operators Glossary: Operatoroperator.
  - Glossary: ValueValue() Instructions: readreads Flow control: if … then
 Flow control: try … thenthe token for * which it recognizes as an Vipsi command syntax: Operators Operators Glossary: Operatoroperator. Numeric functions: nownow it has to decide whether Flow control: if … then Flow control: try … thenthe 'pending' Vipsi command syntax: Operators Operators Glossary: Operatoroperator is of higher Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or same priority. Flow control: if … thenif it is, Glossary: ValueValue() must Instructions: putput pack Flow control: if … then Flow control: try … thenthe Operators and Functions with Side Effects: operator ++ and --operator and Flow control: returnreturn. but Flow control: if … then Flow control: try … thenthe passed How does VScript::Value() work?: prioprio is lower, Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and so it resumes, making Vipsi command syntax: Operators Operators Glossary: Operatoroperator * it's currently pending Vipsi command syntax: Operators Operators Glossary: Operatoroperator.
  - Glossary: ValueValue() Numeric functions: nownow needs to evaluate Flow control: if … then
 Flow control: try … thenthe right side of Flow control: if … then Flow control: try … thenthe Vipsi command syntax: Operators Operators Glossary: Operatoroperator. for List functions: thisthis purpose it Functions with varying return types: call Instructions: callcalls itself recursively with Flow control: if … then Flow control: try … thenthe precedence of Flow control: if … then Flow control: try … thenthe current Vipsi command syntax: Operators Operators Glossary: Operatoroperator *.
 
  - Glossary: ValueValue() Instructions: getgets a result, all seems to be fine Operators: Boolean And with Variable "&&="
 Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and calculates Flow control: if … then Flow control: try … thenthe current term, which is 66*77. huuh, i have evaluated something Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and it's Glossary: Valuevalue is 5082! Numeric functions: nownow it expects an Vipsi command syntax: Operators Operators Glossary: Operatoroperator.
  - Glossary: ValueValue() Instructions: readreads Flow control: if … then
 Flow control: try … thenthe token for ; which is Operators: Bitwise Not "~" Operators: Boolean Negation "!"not an Vipsi command syntax: Operators Operators Glossary: Operatoroperator. Glossary: ValueValue() decides, that List functions: thisthis is either an error Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or that Flow control: if … then Flow control: try … thenthe Vipsi command syntax: Expressions Glossary: Expressionexpression Flow control: end Shell Immediate Commands: exit, quit, endends here. because it Flow control: do … loopdoes Operators: Bitwise Not "~" Operators: Boolean Negation "!"not know much about Flow control: if … then Flow control: try … thenthe context where it was called from, it simply Instructions: putputs back Flow control: if … then Flow control: try … thenthe unrecognized token Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Flow control: returnreturns Flow control: if … then Flow control: try … thenthe already evaluated term 5082, leaving it to Flow control: if … then Flow control: try … thenthe Functions with varying return types: call Instructions: callcaller to decide whether he can handle Flow control: if … then Flow control: try … thenthe unrecognized token ;.
  
  
- Glossary: ValueValue() Instructions: getgets Flow control: if … then
 Flow control: try … thenthe required right-side result, all seems to be fine Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and calculates Flow control: if … then Flow control: try … thenthe current term, which is 55+5082. huuh, i have evaluated something Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and it's Glossary: Valuevalue is 5132! Numeric functions: nownow it expects an Vipsi command syntax: Operators Operators Glossary: Operatoroperator. 
- Glossary: ValueValue() Instructions: readreads Flow control: if … then
 Flow control: try … thenthe token for ; which is Operators: Bitwise Not "~" Operators: Boolean Negation "!"not an Vipsi command syntax: Operators Operators Glossary: Operatoroperator. Glossary: ValueValue() decides, that List functions: thisthis is either an error Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or that Flow control: if … then Flow control: try … thenthe Vipsi command syntax: Expressions Glossary: Expressionexpression Flow control: end Shell Immediate Commands: exit, quit, endends here. because it Flow control: do … loopdoes Operators: Bitwise Not "~" Operators: Boolean Negation "!"not know much about Flow control: if … then Flow control: try … thenthe context where it was called from, it simply Instructions: putputs back Flow control: if … then Flow control: try … thenthe unrecognized token Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Flow control: returnreturns Flow control: if … then Flow control: try … thenthe already evaluated term 5132, leaving it to Flow control: if … then Flow control: try … thenthe Functions with varying return types: call Instructions: callcaller to decide whether he can handle Flow control: if … then Flow control: try … thenthe unrecognized token ;.  
Flow control: if … then Flow control: try … thenthe initial Functions with varying return types: call Instructions: callcaller Instructions: getgets back Flow control: if … then Flow control: try … thenthe Glossary: Valuevalue 5132 Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and resumes parsing. he will run into Flow control: if … then Flow control: try … thenthe ; Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and probably decide that it's ok. 
execute.h                   Flow control: if … then Flow control: try … thenthe main execution Flow control: do … looploop:  VScript::Execute(…)
main.cp                     main()
mod_vipsi.c                 Apache module
mod_vipsi.cp                Apache module
Stream.cp                   class Stream to implement vipsi's i/o commands
Stream.h
SystemIO.cp                 platform specific Text functions: file Instructions: filefile handling et.al.
SystemIO.h
token.cp                    Flow control: if … then Flow control: try … thenthe source Data Types: Text Item selector "[]": Text Glossary: text, text_valtext tokenizer: Tokenize()
token.h                     token (List functions: words Shell Immediate Commands: wordsword) definitions
Glossary: Valuevalue.h                     Flow control: if … then Flow control: try … thenthe Vipsi command syntax: Expressions Glossary: Expressionexpression evaluator: VScript::Glossary: ValueValue(…)
custom_errors.h             additional error codes
                                (included by Example Scripts: Librarieslibraries/kio/errors.h)
version.h                   version Text functions: file Instructions: filefile
VScript.cp                  List functions: thisthis class implements Flow control: if … then Flow control: try … thenthe Example Scripts: CGI Scripts Example Scripts: Scriptsscript interpreter
VScript.h
examples/                   some Example Scriptsexample scripts
    test_suite.vs           syntax test suite
    *.prefs                 Appendix: Preferences Filespreferences files for Installationinstallation
    *.vl                    library Text functions: file Instructions: filefiles for Installationinstallation in /usr/local/lib/vipsi/
    vip.xml                 Appendix: Syntax Highlightingsyntax highlighting for kate Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and kwrite
****Text functions: info Shell Immediate Commands: infoINFO****/
    done.txt                completed tasks
    todo.txt                pending tasks
unix/                       Text functions: file Instructions: filefiles for Installationinstallation on unix-style systems
    configure.in            input data for autoconf
    Makefile.in             input data for configure
    config.h.in             input data for configure
    configure               Example Scripts: CGI Scripts Example Scripts: Scriptsscript to make a Makefile for your system
    install.sh              required Example Scripts: CGI Scripts Example Scripts: Scriptsscript
    config.Operators: Subtract "-"sub              required Example Scripts: CGI Scripts Example Scripts: Scriptsscript
    aclocal.m4              required Example Scripts: CGI Scripts Example Scripts: Scriptsscript
    config.guess            required Example Scripts: CGI Scripts Example Scripts: Scriptsscript
    shtool                  required Example Scripts: CGI Scripts Example Scripts: Scriptsscript 
List functions: thisThis is a shared directory for vipsi Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and other projects. 
compress/               data compression
cstrings/               c-string library with ad-hoc Data Types: Text Text functions: stringstring pool
ustring/                Developer Documentation: Class Stringclass String for Data Types: Text Item selector "[]": Text Glossary: text, text_valtext Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Integer numbers: Binary Floating point: Binary Text functions: binstrbinary data Data Types: Text Text functions: stringstrings
Instructions: sortsort/                   Instructions: sortsort Vipsi command syntax: Functions Functions Glossary: Functionfunction template
utf-8/                  utf-8 handling Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and convert: Text conversions: convert: Text conversions:text conversion library
Instructions: var How does VScript::Value() work?: Var*&var/                    Developer Documentation: Class Varclass Var for Glossary: Variable, var_refvariables for interpreters et.al.
kio/                    my all-times-needed header Text functions: file Instructions: filefiles
    abort.cp            aborting
    abort.h
    errors.cp           set Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Instructions: getget errors
    errors.h            error codes Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Data Types: Text Item selector "[]": Text Glossary: text, text_valtexts
    kio.h               Flow control: if … then Flow control: try … thenthe include-it-all header
    Numeric functions: log Numeric functions: loge Instructions: loglog.cp              message logging
    Numeric functions: log Numeric functions: loge Instructions: loglog.h
    nice_defines.h      frequently used simple Vipsi command syntax: Functions Functions Glossary: Functionfunctions
    standard_types.h    standard Data Types Invariants: Data typesdata types
unix/
    file_utilities.cp   unix Text functions: file Instructions: filefile utilities
    file_utilities.h
    os_utilities.cp     unix system Functions with varying return types: call Instructions: callcall utilities
    os_utilities.h 
List functions: thisThis Introductionintroduction is aimed to developers, Operators: Bitwise Not "~" Operators: Boolean Negation "!"not admins. in essence it says nothing more than sourceforge's documentation, it only leaves out 90% of it. :-) though it's written for developers working for vipsi, it's generally appliable for any other project Operators: Make Identifier "@"at sourceforge. 
First i'll tell you some basics. Flow control: if … then Flow control: try … thenthen all Flow control: if … then Flow control: try … thenthe unix stuff; as far as i consider it useful. finally i hope i can Operators: Add to Variable "+=" Operators: Add "+"add some Windows stuff too. 
Flow control: if … thenIf you Numeric functions: findfind an error, something Built-in functions and constants: Unclear: Built-in instructions: Unclear:unclear Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or important to Operators: Add to Variable "+=" Operators: Add "+"add, please send me a note Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and i'll Operators: Add to Variable "+=" Operators: Add "+"add it. 
When multiple developers work on Flow control: if … then Flow control: try … thenthe same source it is very likely that they simultaneously modify Flow control: if … then Flow control: try … thenthe same Text functions: file Instructions: filefiles. there needs to be some means of synchronization, merging Flow control: if … then Flow control: try … thenthe different Flow controlbranches back into Flow control: if … then Flow control: try … thenthe official source. you won't Flow control: do … loopdo List functions: thisthis by hand. 
Flow control: if … then Flow control: try … thenThe main source is hosted Operators: Make Identifier "@"at sourceforge Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and it is called Flow control: if … then Flow control: try … thenthe "repository". when you decide to List functions: join Instructions: joinjoin Flow control: if … then Flow control: try … thenthe effort on Flow control: if … then Flow control: try … thenthe project, you must retrieve a copy of Flow control: if … then Flow control: try … thenthe source, formally called "checkout", just like a book from Flow control: if … then Flow control: try … thenthe library. 
Numeric functions: nowNow you can work with your List functions: localslocal copy of Flow control: if … then Flow control: try … thenthe source, make modifications to it, compile it, verify that it works as expected Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Operators: Add to Variable "+=" Operators: Add "+"add some documentation. 
Regularly you must synchronize Flow control: if … then Flow control: try … thenthe main source, so that your fellow developpers can use your Instructions: newnew Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or improved code. List functions: thisthis is done in two Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or - maybe - three steps: 
Operators: Bitwise Not "~" Operators: Boolean Negation "!"note: Flow control: if … thenif you can't resolve Flow control: if … then Flow control: try … thenthe problems after you have updated your List functions: localslocal copy, you may well delete your List functions: localslocal copy of Flow control: if … then Flow control: try … thenthe source discarding all your modifications so far. to reduce Flow control: if … then Flow control: try … thenthe probability of such an uncomfortable situation you should update your source right before you start work on it, thus incorporating all commits which were made in Flow control: if … then Flow control: try … thenthe past hours Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or days, Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and synchronize Flow control: if … then Flow control: try … thenthe repository every time you come to a safe state in your source modifications, which will Operators: Bitwise Not "~" Operators: Boolean Negation "!"not leave it unusable for others. 
Obviously you need cvs installed on your computer to retrieve Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and hand back source from Flow control: if … then Flow control: try … thenthe repository. you hopefully already have Flow control: if … then Flow control: try … thenthe cvs command installed on your system. Flow control: if … thenif Operators: Bitwise Not "~" Operators: Boolean Negation "!"not, slot-in your OS installer Instructions: cd Shell Immediate Commands: cdCD Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and install it. 
It is required to Numeric functions: log Numeric functions: loge Instructions: loglog into Flow control: if … then Flow control: try … thenthe cvs server Operators: Make Identifier "@"at sourceforge using Flow control: if … then Flow control: try … thenthe secure shell ssh. so you must also verify that you have installed Flow control: if … then Flow control: try … thenthe ssh command. 
A comprehensive introduction to the ssh can be found on sourceforge's documentation page. 
cvs looks for some environment Glossary: Variable, var_refvariables, which should be set before it is executed. you can also supply these Glossary: Valuevalues as command line parameters there are 3 environment Glossary: Variable, var_refvariables to set. 
Flow control: if … thenIf you use bash Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or something similar: 
bash$ export EDITOR=joe
bash$ export CVS_RSH=ssh
bash$ export CVSROOT=YOUR_NAME@cvs.sourceforge.net:/cvsroot/vipsi 
Flow control: if … thenif you use Flow control: if … then Flow control: try … thenthe csh: 
csh> setenv EDITOR  joe
csh> setenv CVS_RSH ssh
csh> setenv CVSROOT YOUR_NAME@cvs.sourceforge.net:/cvsroot/vipsi 
Flow control: if … then Flow control: try … thenThe EDITOR Glossary: Variable, var_refvariable is only required for committing Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and you may have configured your system so that List functions: thisthis Glossary: Variable, var_refvariable is already  set when you start a shell. set it to your favourite editor Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or you'll Flow control: end Shell Immediate Commands: exit, quit, endend up with vi, Flow control: if … then Flow control: try … thenthe default. 
CVS_RSH tells your cvs that it must use Flow control: if … then Flow control: try … thenthe ssh for connections to Flow control: if … then Flow control: try … thenthe cvs Operators: Make Identifier "@"at sourceforge. List functions: thisthis Glossary: Variable, var_refvariable is required in all operations. 
CVSROOT tells your cvs Flow control: if … then Flow control: try … thenthe location of Flow control: if … then Flow control: try … thenthe repository. List functions: thisthis is required only for Flow control: if … then Flow control: try … thenthe initial checkout. you can also supply List functions: thisthis information directly to Flow control: if … then Flow control: try … thenthe cvs command with Flow control: if … then Flow control: try … thenthe -d option. 
Go to Flow control: if … then Flow control: try … thenthe directory where you want to settle your List functions: localslocal copy of Flow control: if … then Flow control: try … thenthe source. it is also ok to retrieve it anywhere Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and copy Flow control: if … then Flow control: try … thenthe whole thing around on your harddisk. 
Checkout Flow control: if … then Flow control: try … thenthe source. vipsi's source tree is currently List functions: split Instructions: splitsplit into three subtrees: 
your_dev_root/
your_dev_root/vipsi/                  <-- from project "vipsi"
your_dev_root/vipsi/documentation     <-- from project "vipsi"
your_dev_root/vipsi/Example Scripts: Librarieslibraries         <-- from project "lib-kio" 
so, to checkout all sources Flow control: do … loopdo Flow control: if … then Flow control: try … thenthe following: pre bash$  Instructions: cd Shell Immediate Commands: cdcd YOUR_DEV_ROOT bash$  export CVS_RSH=ssh bash$  cvs -d:ext:YOU@cvs.sourceforge.net:/cvsroot/vipsi checkout vipsi bash$  cvs -d:ext:YOU@cvs.sourceforge.net:/cvsroot/vipsi checkout documentation bash$  cvs -d:ext:YOU@cvs.sourceforge.net:/cvsroot/lib-kio checkout Example Scripts: Librarieslibraries bash$  mv Example Scripts: Librarieslibraries vipsi/ bash$  mv documentation vipsi/ 
Numeric functions: nownow you have your own copy of Flow control: if … then Flow control: try … thenthe source Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and can work on it. don't touch Flow control: if … then Flow control: try … thenthe folders named CVS. they contain administrative Text functions: file Instructions: filefiles for cvs Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and must remain in Flow control: if … then Flow control: try … thenthe folders they reside in. 
instruct cvs to use Flow control: if … then Flow control: try … thenthe ssh, go to Flow control: if … then Flow control: try … thenthe directory which you want to update Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Flow control: do … loopdo it: 
bash$  export CVS_RSH=ssh
bash$  Instructions: cd Shell Immediate Commands: cdcd YOUR_DEV_ROOT/vipsi
bash$  cvs update 
cvs most times works on Flow control: if … then Flow control: try … thenthe current directory Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and retrieves most required informations from Flow control: if … then Flow control: try … thenthe data stored in Flow control: if … then Flow control: try … thenthe CVS folders. so in List functions: thisthis case you only need to define CVS_RSH so that Flow control: if … then Flow control: try … thenthe ssh is used. perhaps some time they will store List functions: thisthis in Flow control: if … then Flow control: try … thenthe CVS folders too. 
there are some useful options to update which you may decide to use: 
Flow control: if … then Flow control: try … thenthe option -d tells cvs that it shall create Instructions: newnew subdirectories in your List functions: localslocal source tree to Numeric functions: matchmatch Instructions: newnew directories in Flow control: if … then Flow control: try … thenthe repository. cvs Flow control: do … loopdoes Operators: Bitwise Not "~" Operators: Boolean Negation "!"not create Flow control: if … then Flow control: try … thenthem by default! you must specify List functions: thisthis option. 
Appending option -P has Flow control: if … then Flow control: try … thenthe opposite effect: Flow control: if … thenif a subdirectory becomes empty after cvs update, Flow control: if … then Flow control: try … thenthen it is silently removed. 
You may Numeric functions: findfind it best to always Functions with varying return types: include Instructions: includeinclude these two options: 
bash$ cvs update -dP 
When you update your copy of Flow control: if … then Flow control: try … thenthe source, cvs Data Types: Lists and arrays Item selector "[]": Lists Glossary: list, list_vallists all Text functions: file Instructions: filefiles inspected Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and prepends Flow control: if … then Flow control: try … thenthem with a dir: flagsflag: 
cvs server: Updating .   Text functions: info Shell Immediate Commands: infoinfo: cvs starts to inspect Flow control: if … then Flow control: try … thenthe current directory
M Glossary: Valuevalue.cp               Glossary: Valuevalue.cp has been locally modified (by you)
P Glossary: Valuevalue.h                Glossary: Valuevalue.h is updated in Flow control: if … then Flow control: try … thenthe cvs, patches were transferred
U verrors.h              verrors.h is updated in Flow control: if … then Flow control: try … thenthe cvs, Text functions: file Instructions: filefile was transferred anew
C token.h                modified simultaneously in overlapping lines: collision! 
You must Instructions: editedit Flow control: if … then Flow control: try … thenthe incriminated Text functions: file Instructions: filefiles, in Flow control: if … then Flow control: try … thenthe above example token.h, Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and work out Flow control: if … then Flow control: try … thenthe problems manually before you can commit your changes. differences are marked similarly to a diff output Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and look very prominent. working out Flow control: if … then Flow control: try … thenthe problems may be easy - Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or nearly impossible. you may decide to discard your changes Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and checkout Flow control: if … then Flow control: try … thenthe source anew, because you can't resolve Flow control: if … then Flow control: try … thenthe collissions. to reduce Flow control: if … then Flow control: try … thenthe probability of such an uncomfortable situation update your source regularly! 
Go to Flow control: if … then Flow control: try … thenthe directory which you want to commit back to Flow control: if … then Flow control: try … thenthe repository. Flow control: if … then Flow control: try … thenthen commit your source: 
bash$ export CVS_RSH=ssh
bash$ Instructions: cd Shell Immediate Commands: cdcd YOUR_DEV_ROOT/vipsi
bash$ cvs commit -m "Operators: Add to Variable "+=" Operators: Add "+"add a Vipsi command syntax: Commentscomment about List functions: thisthis commit here" 
Flow control: if … thenIf you forget Flow control: if … then Flow control: try … thenthe Vipsi command syntax: Commentscomment Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or intentionally leave it out, cvs starts Flow control: if … then Flow control: try … thenthe editor as mentioned above for you to insert one. in List functions: thisthis case it is better that you have Flow control: if … then Flow control: try … thenthe EDITOR Glossary: Variable, var_refvariable set: 
bash$ export EDITOR=joe
bash$ export CVS_RSH=ssh
bash$ Instructions: cd Shell Immediate Commands: cdcd YOUR_DEV_ROOT/vipsi
bash$ cvs commit 
List functions: thisThis will fire up Flow control: if … then Flow control: try … thenthe editor joe after you have entered Flow control: if … then Flow control: try … thenthe commit command. 
Sometimes you must introduce Instructions: newnew Text functions: file Instructions: filefiles into Flow control: if … then Flow control: try … thenthe source tree. cvs Flow control: do … loopdoes Operators: Bitwise Not "~" Operators: Boolean Negation "!"not automatically Operators: Add to Variable "+=" Operators: Add "+"add all Text functions: file Instructions: filefiles in Flow control: if … then Flow control: try … thenthe directories you commit to Flow control: if … then Flow control: try … thenthe repository. it only updates Flow control: if … then Flow control: try … thenthe Text functions: file Instructions: filefiles which it initially got with checkout. in fact, i have a lot more Text functions: file Instructions: filefiles around in vipsi's source tree, tests, docs Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and most notably intermediate Text functions: file Instructions: filefiles from Flow control: if … then Flow control: try … thenthe compiler. they are more Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or less ignored by cvs. 
To Operators: Add to Variable "+=" Operators: Add "+"add a Text functions: file Instructions: filefile Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or directory to Flow control: if … then Flow control: try … thenthe repository, you must create it, Operators: Add to Variable "+=" Operators: Add "+"add it to your List functions: localslocal cvs Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and submit Flow control: if … then Flow control: try … thenthe change: 
bash$ export CVS_RSH=ssh
bash$ Instructions: cd Shell Immediate Commands: cdcd YOUR_DEV_ROOT/vipsi
bash$ cvs update
bash$ mkdir testdir
bash$ cvs Operators: Add to Variable "+=" Operators: Add "+"add testdir
bash$ cvs commit -m "it's a test only" 
Don't Operators: Add to Variable "+=" Operators: Add "+"add directories just for fun - they cannot be removed from Flow control: if … then Flow control: try … thenthe cvs repository! 
when you reorganize parts of your source it may also happen, that entire Text functions: file Instructions: filefiles Operators: Boolean Or with Variable "||=" Operators: Bitwise Or with Variable "|=" Operators: Bitwise Or "|" Operators: Boolean Or "||"or directories become obsolete. to remove a Text functions: file Instructions: filefile from Flow control: if … then Flow control: try … thenthe repository, you first must delete it in your List functions: localslocal tree (for security reasons), Flow control: if … then Flow control: try … thenthen remove it from your List functions: localslocal cvs Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and finally submit Flow control: if … then Flow control: try … thenthe change: 
bash$ export CVS_RSH=ssh
bash$ Instructions: cd Shell Immediate Commands: cdcd YOUR_DEV_ROOT/vipsi
bash$ cvs update
bash$ rm testfile
bash$ cvs rm testfile
bash$ cvs commit -m "it's a test only" 
Directories cannot be removed. Flow control: if … then Flow control: try … thenthe only thing you can Flow control: do … loopdo is to delete all Text functions: file Instructions: filefiles in it Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and use Flow control: if … then Flow control: try … thenthe -P option whenever you update your List functions: localslocal source. Flow control: if … then Flow control: try … thenthe -P option prunes empty directories from your List functions: localslocal copy, as told above. 
Unluckily enough, List functions: thisthis is also Operators: Bitwise Not "~" Operators: Boolean Negation "!"not supported by Flow control: if … then Flow control: try … thenthe cvs. instead, you must delete Flow control: if … then Flow control: try … thenthe old Text functions: file Instructions: filefile Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and Operators: Add to Variable "+=" Operators: Add "+"add it with Flow control: if … then Flow control: try … thenthe Instructions: newnew Vipsi command syntax: Identifiers (names) Identifiers, names Operators: Make Identifier "@" Text functions: name Glossary: Name, Identifiername: 
bash$ export CVS_RSH=ssh
bash$ Instructions: cd Shell Immediate Commands: cdcd YOUR_DEV_ROOT/vipsi
bash$ cvs update
bash$ mv oldname newname
bash$ cvs rm oldname
bash$ cvs Operators: Add to Variable "+=" Operators: Add "+"add newname
bash$ cvs commit -m "it's a test only" 
Because directories cannot be removed from Flow control: if … then Flow control: try … thenthe cvs, they cannot be "moved" List functions: thisthis way either. all you can Flow control: do … loopdo is create a Instructions: newnew directory Operators: Boolean And with Variable "&&=" Operators: Bitwise And with Variable "&=" Operators: Bitwise And "&" Operators: Boolean And "&&"and ignore Flow control: if … then Flow control: try … thenthe old one... 
Still working on that - i don't have Windows! maybe s.o. Flow control: if … then Flow control: try … thenelse will Flow control: do … loopdo List functions: thisthis for me? 
 |