Subject: OBST3-3.5 now available for Linux
From: [email-masked] (Frank Fock)
Date: Sun, 24 Apr 1994 17:19:47 GMT
Newsgroups: comp.os.linux.announce

We had a few problems porting OBST3-3.5 to Linux. But with support from the 
OBST users the port is now available. Special thanx to Naresh Sharma for 
supporting us.

    OBST --- The object management system of STONE.

    OBST is an object-oriented DBMS with a C++ programming interface, an
    interpretative interface for tcl (object-shell), a libray of predefined
    classes, and a set of utilities to support application development
    (graphical class and schema editor USE, parser/unparser generator
    STF). OBST has been ported to a variety of plateforms (SUN, ATT & GNU
    C++, HP, NexSTEP, Linux) and comes with extensive documentation
    (user's guide, reference manual, tutorial).

The OBST system is available via anonymous FTP from
ftp.fzi.de [141.21.4.3].
It can also be found on GNU servers, e.g. as /pub/gnu/OBST-all-3.3.5.tar.gz
on prep.ai.mit.edu.

README.OBST3-3.5.linux:
-----------------------

We have installed OBST on Linux Version 1.0
with g++ 2.4.5 by calling configure in the following way:

   ./configure  --v --subst:do_boot=1

We recommend to install OBST on a PC with at least 16 MB.  Otherwise
it will take a long time to install OBST. To compile tclOBST you need 
also Tcl/Tk.

If you want to use tclOBST with OBST3-3.5, you have to append the following 
text into ./src/obst/obst.C:

/* begin of text */
 
EXPORT void* tsearch (_qsort_const_ void* key, 
                      void**              rootp, 
                      qsort_cmpfct_t*     compar)
{
    struct _node {
        _qsort_const_ void* keyptr;
        struct _node *llink;
        struct _node *rlink;
    };
    struct _node *nodeptr;

    if (*rootp == NULL) {
        nodeptr = new (struct _node);
        nodeptr->llink = NULL;
        nodeptr->rlink = NULL;
        nodeptr->keyptr = key;
        (*rootp) = (void *) nodeptr;
        return((void *) &key);
    }
    else {

        struct _node *treeptr;
        int K;

        treeptr = ((struct _node *) *rootp);

        while (1) {

           K = compar(key, treeptr->keyptr);

           if (K < 0) {

              if (treeptr->llink == NULL) 
                 break;
              else
                 treeptr = treeptr->llink;
           }
           else if (K > 0) {
              if (treeptr->rlink == NULL) 
                 break;
              else
                 treeptr = treeptr->rlink;
           }
           else
              return((void *) &(treeptr->keyptr)); 
        }

       nodeptr = new (struct _node);
       nodeptr->llink = NULL;
       nodeptr->rlink = NULL;
       nodeptr->keyptr = key;

       if (K < 0) 
         treeptr->llink = nodeptr;
       else
         treeptr->rlink = nodeptr;
         
       return((void *) &key);      
    }    
}

/* end of appended text */

AND insert the following line in the list of #define instructions at the
top of ./src/obst/obst.C:

#define OBST_IMP_SORT_SEARCH

-- 
  ------------------------------------------------------------------- 
  OBST Team * Frank Fock 
  Forschungszentrum Informatik (FZI)        
  Haid-und-Neu-Str. 10-14                 
  D-76131 Karlsruhe, Germany                      email   [email-masked]
  ------------------------------------------------------------------- 
 Please send all questions and remarks concerning OBST to [email-masked]

 If you ran into difficulties with the installation or usage of OBST, 
 please give us information about your platform. Be so kind to add
 this info to every bug report:

     o OBST version 
     o configuration parameters for your OBST version
       (from file config.status)
     o kind and version of C++ compiler 
     o machine
     o operating system
--
Mail submissions for comp.os.linux.announce to: [email-masked]
Be sure to include Keywords: and a short description of your software.