home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / mac / 1000 / CCE_1024.ZIP / CCE_1024 / SOZLIB07.LZH / SOZDISTR / DOC / XDLIBS.CHG < prev    next >
Text File  |  1994-10-12  |  16KB  |  409 lines

  1. -----------------------------------------------------------
  2. DLibs -> XDlibs
  3.  
  4. last modifications by jerry geiger
  5. To identify and include the XdLibs version in your program you have
  6. access to following variables:
  7. extern int _xdlibs;    /* version number as BCD (print hex value)    */
  8. extern char _xdlibs_date[]:    /* modification date string    */
  9. extern __Ident_lib[];    /* a standard ident string    */
  10.  
  11. Wed Oct 12 1994
  12. version 1.06
  13.     
  14.     function 'wild()' - FNRE matching tests
  15.         is now moved to 'libextra.a'; And a variable 
  16.     'char __EXCLUDE_CHAR__' exists to specify the not character
  17.         for classes (default is '^').
  18.  
  19.     now two 'libc' files, one with floating point calculations support
  20.     ('libc.a') and an integer only library ('libci.a', like previous 
  21.     libc.a' files).
  22.     This is for soon there will be an hcc available with full IEEE
  23.     support, and usually the 'libc.a' file contains all functions used
  24.     for floating point support.
  25.     cc will use the right library according to '-f' or '-lm' switches!
  26.  
  27.     xgemfast.h has changed, for hcc 2.00x23 now supports std bitfields!
  28.     you will have to recompile all sources at once if you use
  29.     hcc v2.00x23. 
  30.     
  31.     the startup codes now support another cookie as variable: 
  32.     'short _magix', with the version number found or 0 if not available.
  33.  
  34.     bug fixed in tempnam() and stdio.h (exist() == !access())
  35.  
  36. version 1.05
  37. Jul 19 1994
  38. (official release)
  39.         new file names: xdlibs library are now:
  40.     xdlibs\libc.a, xdlibs\libextra.a
  41.  
  42.     div(), ldiv() implemented
  43.     abs(), labs() implemented as functions, 
  44.         macros are now: _abs() and _labs()
  45.  
  46. version 1.04
  47. Jul 06 1994
  48.     bugs fixed in fread()
  49.  
  50. Jun 27 1994
  51. changed:
  52.     creat.o , spawn3.o 
  53.     spawn0.o (new, to reduce linking of unnecessary functions)
  54.  
  55.     fsize.o, now size.o, (function fsize() now called size(), cause f...
  56.         functions refer to FILE struct handling functions)
  57.  
  58.     pfindfile.o   (path searches now always - if no root path specified)
  59.  
  60.     bug in findfile.o fixed 
  61.  
  62. Jun 21 1994
  63.     bugs fixed in creat.o,
  64.  
  65.     changed: startup modules, getenv.o, initeargs.o
  66.     new: crtinit.o , consiste.o
  67.         setup some variables and check buggy
  68.         environment: new Variable: 'int __ASSUME_CONSITENT_ENV__'
  69.         if != 0 (default) it is assumed that environment is
  70.         consistent (i.e. if fist is correct all other
  71.         strings are assumed to be correct, too)
  72.     new: strictly.o
  73.         new Variable 'int __STRICTLY_ARGV__'
  74.         if != 0 only ARGV commandlines using 127 as length
  75.         byte get used. (some programs don't do so - gulam!)
  76.         default is 0 - FALSE.
  77.     changed: main.o
  78.         handling of stderr improved:
  79.         now uses unchanged stderr (handle 2) if ARGV method
  80.         was used calling this program, too.
  81.  
  82. version 1.03
  83. Jun 17 1994
  84.     line buffering implemented
  85.     some functions changed:
  86.     access() returns TRUE for error now (ANSI/POSIX)
  87.         handles executable files now
  88.         handles UNIX like filesystems (MiNT!) now
  89.     stat(), chmod(), create(), open() (MiNT extensions)
  90.         some constants changed, structure stat changed!!
  91.     system() runs only with a shell now! don't uses _shell_p if
  92.         MiNT is running
  93.     _ttty() device input now emulates a std tty driver, never
  94.         called if MiNT is running
  95.     time functions splitted and changed!
  96.         rawtime encoding changed: you can compare time_t rawtime
  97.         values now, younger will be greater always!
  98.     i/o buffered/FILES are flushed on exit again
  99.         fgetc.o, main.o
  100.     spawn functions:
  101.         forkl...() removed;
  102.         new spawn functions (names like old forkl...() functions
  103.         wait() removed;
  104.     lrealloc() implemented
  105.     fputs()    will add a newline if there was none;
  106.     fread() and fwrite() work according to openmode (binary or text)
  107.     __FRW_BIN__ and __FWRT_BIN__ implemented (changes the newline
  108.         translating independent from open mode)
  109.     __ident_lib implemented (char __ident_lib[]).
  110.         to identify the XdLibs version you can type:
  111.         'ar p [path]xdlibs.a xdlibs.o' in your shell
  112.         and you can read some strings from this object module.
  113.     setvbuf() works as provided by standard now;
  114.  
  115. version 1.02
  116. Fri Apr 15 1994
  117.  
  118. Getcookie bug (testing pointer didn't work correctly) fixed.
  119.  
  120.  
  121. Sat Mar 5 1994
  122.  
  123. new startup codes, new minimum.h, _mint flag now available
  124. new function GetMiNT(); is a dummy in programms using '*_s.o' and not
  125. minimum.h.
  126. (see xdlibs.txt for this)
  127.  
  128. The wrong _main() function in XDlibs is replaced.
  129.  
  130. unsigned int sleep(unsigned int seconds)
  131.     changed to standard (unsigned); now with MiNT feature (using signal)
  132.  
  133. void usleep(unsigned long usec)
  134.     changed to standard (unsigned long micro seconds), MiNT feature
  135.     (using Fselect(), so only milliseconds are taken into account!)
  136.     This is not compatible with old implementation, but I think hardly
  137.     anyone has used it.
  138.  
  139. clock_t clock()    now returns the CLK_TCKs since progamm start, as provided by
  140.     standard, this works only if a '*_s.o' startup code was used.
  141. So I had to make some changes in extended.lib, too.
  142.  
  143. In stddef.h a macro _XDLIBS is defined with the expected version number
  144. of the XDLIBS library. There is an 'int _xdlibs' in xdlibs.a, with the
  145. current version number. Highbyte is version, lowbyte is revision
  146.  
  147. new function
  148.     long teststack()
  149.     returns the long number of Bytes unused stacksize. This may help
  150.     you to calculate an appropriate _STKSIZ value. 
  151.     The accapp_s.o statup code has implemented this function, cause only
  152.     the startup code itself knows where it's stack is located at
  153.     runtime. 
  154.     
  155.  
  156. version 1.01
  157. Fri Feb 25 1994
  158.  
  159. some major changes with include files: stdlib.h, stdio.h unistd.h
  160. types.h is generally included with stddef.h now
  161. stddef.h is included by stdlib.h and stdio.h
  162. !!size_t is unsigned int now!! 
  163. there is still a lot of work to do with header files and library stuff.
  164.  
  165.  
  166. int system(char *command)
  167.     returns now TRUE if command is NULL and a shell is available
  168.     makes use of new ARGV scheme (empty args), tokenizes command
  169.     with quoted (',",`) strings as a shell expects it
  170.  
  171. int chdir(char *path)
  172.     A drive letter can be specified and will change the drive
  173.     first. 
  174.  
  175. int forkl...
  176.     names and parameters now really according to exec... calls
  177.     IF YOU USED THIS FUNCTIONS SEE DOCUMENTS!!!!!!
  178.     Now they return the childs return value!!!
  179.     The functions use now ATARI's new ARGV scheme, the current
  180.     (putenv(), modified) environment.
  181.     errno and wait() will help you with some informations about
  182.     the terminated or never created child.
  183.  
  184. char *getenv(char *var)
  185.     bug fixed
  186.  
  187. int putenv(char *entry)
  188.     completely rewritten, now it works correct, I hope.
  189.  
  190. char *strncat(char *dest, char source, int len)
  191.     bug fixed
  192.  
  193. int atexit(void (*fnc)())
  194.     you can store up to 32 functions now, called by exit while program
  195.     termination
  196.  
  197.  
  198. calling main:
  199.  
  200. _main() If main returns the value is passed to exit.
  201.     stderr now is filehandle 2 if $STDERR ist set;
  202.  
  203. _initargs() now retrives commandlines from Environment
  204.     (ARGV scheme), including empty arguments
  205.  
  206.  
  207. -----------------------------------------------------------
  208. Änderungen von Holger Weets, Christian Wempe & Frank Specht
  209. Anmerkung: an dieser Datei wird nur gelegentlich, und wenn,
  210.            dann in aller Eile geaendert, es koennen somit
  211.            einander widersprechedne Teile enthalten sein
  212. -----------------------------------------------------------
  213. - Die Funktion 'crystal' wurde entfernt, da sie bei Verwendung der GEMFAST-
  214.   Bibliothek nicht notwendig ist.
  215. - einige weniger oft verwendete Funktionen aus den XDLibs wurden in eine
  216.   neue Bibliothek verschoben, so dass die XDLibs jetzt kuerzer sind
  217.   (besonders fuer Ramdisk-Benutzer interessant) und das Linken schneller
  218.   ist (der Linker hat weniger Symboltabellen zu untersuchen)
  219.   Es sind dies u.a.:
  220.    system, exec, die *fork* Funktionen, die Sortier-Funktionen, entab,
  221.    detab, ostrap, die Profiling-Sachen, der Online-Debugger etc.
  222.   Diese neue Bibliothek trägt den Namen 'EXTENDED.LIB'
  223.  
  224.  
  225. Einige Funktionen wurden in Assembler neu implementiert:
  226. --------------------------------------------------------
  227.    STRSTR   STRLEN   STRCPY   STRNCPY  STRNCAT  STRUPR   STRCMP
  228.    STRNCMP  STRPOS   STRRPOS  STRRCHR  MEMMOVE  STRCAT   STRLWR
  229.    ATOI     ATOL     STRNICMP STRICMP  BZERO    STRDUP   CTLCNV
  230.    STRADJ   MEMCHR   MEMCMP   MEMICMP  MEMSET   STRSET   STRNSET
  231.    STRPCPY  MEMCCPY  LMEMMOVE SUBSTR   SUBNSTR  STRTOK   STRTRIM
  232.    ITOA     LTOA     ULTOA    STRSPN   STRISTR  FPRINTF  VFPRINTF
  233.    PRINTF   VPRINTF  STRRPL   STRIRPL  QSORT    HSORT    SWAB
  234.    LMEMCPY  STRREV   STRRPBRK STRPBRK  STRCSPN
  235.  
  236. Autoren: Christian Wempe, Amiga & Holger Weets, Atari;
  237.  
  238. Anmerkungen: - Für qsort() wird KEIN Buffer mehr benötigt, daß Anlegen der
  239.                globalen Variablen '_qbuf' entfällt somit.
  240.              - lmemcpy & memcpy   sind eine Funktion mit 2 Einstiegspunkten
  241.              - lmemmove & memmove                  -"-
  242.              - strstr & stristr                    -"-
  243.              - strrpl & strirpl                    -"-
  244.              - read & lread                        -"-
  245.              - write & lwrite                      -"-
  246.  
  247.              - Die Funktion calloc() wurde aus der Datei MALLOC.C entfernt
  248.                und in eine eigene Datei verschoben. Bei Nicht-Verwendung von
  249.                calloc() wurde diese bisher trotzdem gelinkt, dies ist jetzt
  250.                nicht mehr der Fall.
  251.  
  252.              - bisher befanden sich die Funktionen open() und close() in der
  253.                selben Datei. Da close() von fclose() aufgerufen wird, und
  254.                diese Funktion wiederum von _main() (wird außer bei ACC's
  255.                immer gelinkt), wurde auch open() immer gelinkt, auch wenn
  256.                sie nicht verwendet wurde. Von dieser Funktion wiederum wurden
  257.                access(), lseek() und creat() gelinkt (IMMER!) ...
  258.  
  259.              - bei Verwendung von cprintf() reicht jetzt (wie bei printf()
  260.                auch) ein einfaches '\n' für ein Newline, da diese Funktion
  261.                jetzt per cputc (siehe unten) ausgibt. Das lästige "\r\n"
  262.                entfällt somit.
  263.                Gleiches gilt für die Funktion cputs().
  264.  
  265.              - für den neuen Optimizer (V2.00x*) wurden die Funktionen
  266.                   strcmp()    strcpy()    strcat()    strlen()
  267.                   strchr()    strrchr()   stricmp()   strlwr()
  268.                   strupr()    strrev()    strpos()
  269.                so umgeschrieben, daß sie schneller (und teilweise länger)
  270.                sind als vorher, und ihre Parameter in Registern anstatt
  271.                auf dem Stack erhalten.
  272.              - die Funktion Ftell() befand sich nicht im Archiv, obwohl der
  273.                Quelltext vorhanden war -- ergänzt
  274.              - es sollte sich jetzt kein Modul mehr in den XDLibs befinden,
  275.                welches eines der Symbole 'gemdos', 'bios' oder 'xbios'
  276.                referenziert. Falls doch, zusätzlich die 'extended.lib'
  277.                linken (nach den XDLIBS) und schon tut's wieder
  278.  
  279. Ebenfalls neu geschrieben wurden:
  280. ----------------------------
  281.    STRTOL   STRTOUL  TOUPPER        TOLOWER     MKDIR    RMDIR    REMOVE
  282.    CHDIR    CLOCK    START_TIMER    TIME_SINCE  CHMOD    WRITE    LWRITE
  283.    READ     LREAD    GETW           GETL        PUTW     PUTL     ACCESS
  284.    FSIZE    STAT
  285. von Holger Weets.
  286.  
  287. Die Funktionen gemdos(), bios() und xbios() wurden aus den Startup's ent-
  288. fernt und unter dem Namen 'ostrap.o' in die XDlibs aufgenommen. Der Grund
  289. hierfür ist, daß der Compiler (HCC) jetzt keine Aufrufe dieser Funktionen
  290. mehr erzeugt, sondern direkt die 'trap' - Instruktionen generiert, was sowohl
  291. kürzer als auch mehr als doppelt so schnell ist.
  292.  
  293. Nach und nach werde ich immer mehr der sonstigen XDLibs - Funktionen neu
  294. übersetzen, damit sie
  295.    a) kürzer werden wegen
  296.       - neuer HCC (traps)
  297.       - neuer TOP (mehr Optimierung)
  298.    b) an den neuen Symbol-Tabellen-Standard (V2.0*) angepasst werden
  299.       (beliebig lange Namen)
  300.  
  301.  
  302. Neu in die DLibs aufgenommen wurden die Funktionen:
  303. ---------------------------------------------------
  304. void (*_userexit)()
  305.    Dieser Zeiger auf eine Funktion kann vom Programm jederzeit mit
  306.    einem Wert belegt werden. Die Funktion exit() prüft diesen Wert
  307.    und falls er nicht 0 ist, wird die Funktion aufgerufen, auf die
  308.    <_userexit> zeigt. Praktisch, um z.B. Dateien noch zu schliessen,
  309.    temporäre Dateien zu löschen oder Vektoren wieder gerade zu biegen.
  310.    exit() wird von main() übrigens automatisch aufgerufen.
  311.  
  312. void ChkAbort()
  313.    Testet, ob Ctrl-C gedrückt wurde und ruft ggfls. exit() auf. Außerdem
  314.    wird die Zeichenkette "^C" auf den Bildschirm ausgegeben.
  315.  
  316. int cputc(char c)
  317.    Das Zeichen <c> wird auf die Console ausgegeben (per Bconout(2, c)).
  318.    Falls das Zeichen '\n' ist, so wird außerdem ein '\r' ausgegeben.
  319.    Diese Funktion wird von cprintf() und cputs() verwendet.
  320.  
  321. char *detab(char *string, int tabsize)
  322.    Alle Tabs in string werden durch Spaces ersetzt, wobei als Tabulator-
  323.    weite tabsize angenommen wird.
  324.  
  325. char *entab(char *string, int tabsize)
  326.    Alle Spaces in string werden durch Tabs ersetzt, wobei als Tabulator-
  327.    weite tabsize angenommen wird.
  328.  
  329. void memswap(char *p1, char *p2, int len)
  330.    Die Speicher-Bereiche ab p1/p2 werden vertauscht, und zwar len Bytes.
  331.  
  332. int strwrap(char *dest, char *src, int len)
  333.    Der String src wird auf eine max. Länge von len gebracht, wobei bei
  334.    Blanks getrennt wird. Dieser Bereich wird nach dest kopiert und aus src
  335.    gelöscht.
  336.    Zurückgegeben wird die neue Länge von src.
  337.  
  338. int strcstrp(char *string, char ch)
  339.    Alle aufeinanderfolgenden Vorkommen von ch in string werden entfernt.
  340.    Beispiel: strcstrp("Hallo       Welt", ' ') wird zu "Hallo Welt".
  341.    Zurückgegeben wird die neue Länge von string.
  342.  
  343. char *strdcat(char *str1, char *str2)
  344.    Alloziiert per malloc() soviel Speicher, wie für die Aufnahme beider
  345.    Strings notwendig ist, und schreibt sie hintereinander in diesen.
  346.  
  347. char *strvcat(anz, dest, src1, src2, ..., srcN)
  348.    Die Strings src1 - scrN werden nacheinander in dest kopiert.
  349.    Beispiel: strvcat(5, p, "Dies ", "ist ", "ein ", "Test"); in <p> stehe
  350.              bereits: "Ausgabe: ";
  351.    ergibt "Ausgabe: Dies ist ein Test"
  352.    Der Parameter anz gibt dabei die Anzahl ALLER noch folgenden Parameter an.
  353.  
  354. char *strvcpy(anz, dest, scr1, scr2, ..., scrN)
  355.    Die Strings src1 - scrN werden nacheinander in dest kopiert.
  356.    Beispiel: strvcat(5, p, "Dies ", "ist ", "ein ", "Test"); in <p> stehe
  357.              bereits: "Ausgabe: ";
  358.    ergibt "Dies ist ein Test" (OHNE "Ausgabe: ", weil überschrieben wird!!!)
  359.    Der Parameter anz gibt dabei die Anzahl ALLER noch folgenden Parameter an.
  360.  
  361. int strblk(char *str, int len)
  362.    Formatiert <str> auf Blocksatz mit Länge <len>.
  363.    Zurückgeliefert wird ein Wert <>0, falls alles geklappt hat
  364.  
  365. char *basename(char *path)
  366.    Liefert einen Zeiger auf das dem letzten Backslash folgende Zeichen.
  367.    Falls <path> also einen Dateinamen enthält, so liefert basename() einen
  368.    Zeiger auf diesen. Falls <path> überhaupt keinen Backslash enthält, so
  369.    liefert die Funktion einen Zeiger auf das erste Zeichen von <path>, also
  370.    wieder einen Zeiger auf den Dateinamen. Falls <path> mit einem Backslash
  371.    endet, wird ein Zeiger auf des Stringende zurückgegeben.
  372.  
  373. char *suffix(char *path)
  374.    Liefert einen Zeiger auf die Endung (Extension, Suffix) des uebergebenen
  375.    Argumentes (Dateiname mit/ohne Pfad). Der Zeiger steht AUF dem '.'
  376.    Falls die Datei keine Endung enthält, steht der Zeiger auf dem String-
  377.    Ende, also dem 0-Zeichen.
  378.  
  379. void cwd(char *path)
  380.    Liefert in <path> den aktuellen Zugriffspfad zurück. Das Ergebnis ist das
  381.    gleiche, wie von getcwd(), bloß
  382.    - ist cwd() kürzer
  383.    - liefert cwd() den Pfad in Großbuchstaben, und nicht, wie getcwd(), in
  384.      Kleinbuchstaben.
  385.  
  386. int index(char *str, char c)
  387.    Wie strpos, aus Kompatibiliäts-Gründen.
  388.  
  389. int rindex(xhr *str, char c)
  390.    Wie strrpos, aus Kompatibiliäts-Gründen.
  391.  
  392. prof.o; Funktionen für das im Compiler eingebaute Profiling; enthält:
  393.    void _prolog(char *name)
  394.       wird am Anfang jeder Funktion aufgerufen, <name> ist der Name der
  395.       Funktion
  396.    void _epilog(char *name)
  397.       wird am Ende jeder Funktion aufgerufen, <name> ist der Name der
  398.       Funktion
  399.    void _savepro()
  400.       wird direkt vor Programm-Ende (von __exit()) aufgerufen und speichert
  401.       die Profiling-Tabelle in einer Datei Namens 'PROF.OUT'. Funktioniert
  402.       nur dann automatisch, wenn der zugehörige Startup-Code verwendet wird
  403.       (prof_s.o).
  404.  
  405.  
  406. Amiga-Version von Christian Wempe
  407. ST-Version von Holger Weets
  408.  
  409.