remove xsql_config, database providers and format providers loads as plugin
authorshura <[email protected]>
Fri, 26 Sep 2025 13:42:40 +0000 (26 16:42 +0300)
committershura <[email protected]>
Fri, 26 Sep 2025 13:42:40 +0000 (26 16:42 +0300)
dpkg-build.sh
src/config/Jamfile [deleted file]
src/config/xsql_config.c [deleted file]
src/excel/Jamfile

dissimilarity index 77%
index ce9a4b8..2da331f 100755 (executable)
-#!/bin/bash
-
-PACKAGE=xsql
-VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
-LIBDIR=debian/$PACKAGE/usr/lib
-DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
-mkdir -p $LIBDIR
-mkdir -p $DOCDIR
-cp libxsql.so.$VER $LIBDIR
-ln -s libxsql.so.$VER $LIBDIR/libxsql.so
-cp copyright $DOCDIR
-cp changelog.Debian.gz $DOCDIR
-cd debian/$PACKAGE
-md5deep -r -l usr > DEBIAN/md5sums
-cd ..
-fakeroot dpkg-deb --build $PACKAGE
-mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
-rm -fr $PACKAGE/usr/*
-rmdir $PACKAGE/usr
-rm $PACKAGE/DEBIAN/md5sums
-cd ..
-
-PACKAGE=xsql-dev
-VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
-LIBDIR=debian/$PACKAGE/usr/lib
-INCDIR=debian/$PACKAGE/usr/include/libxsql
-DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
-mkdir -p $LIBDIR/pkgconfig
-mkdir -p $DOCDIR
-mkdir -p $INCDIR
-cp libxsql.pc $LIBDIR/pkgconfig
-cp include/libxsql/* $INCDIR
-cp copyright $DOCDIR
-cp changelog.Debian.gz $DOCDIR
-cd debian/$PACKAGE
-md5deep -r -l usr > DEBIAN/md5sums
-cd ..
-fakeroot dpkg-deb --build $PACKAGE
-mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
-rm -fr $PACKAGE/usr/*
-rmdir $PACKAGE/usr
-rm $PACKAGE/DEBIAN/md5sums
-cd ..
-
-PACKAGE=xsql-firebird
-VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
-LIBDIR=debian/$PACKAGE/usr/lib
-DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
-mkdir -p $LIBDIR
-mkdir -p $DOCDIR
-cp libxsql_gds.so.$VER $LIBDIR
-ln -s libxsql_gds.so.$VER $LIBDIR/libxsql_gds.so
-cp copyright $DOCDIR
-cp changelog.Debian.gz $DOCDIR
-cd debian/$PACKAGE
-md5deep -r -l usr > DEBIAN/md5sums
-cd ..
-fakeroot dpkg-deb --build $PACKAGE
-mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
-rm -fr $PACKAGE/usr/*
-rmdir $PACKAGE/usr
-rm $PACKAGE/DEBIAN/md5sums
-cd ..
-
-PACKAGE=xsql-mdb
-VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
-LIBDIR=debian/$PACKAGE/usr/lib
-DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
-mkdir -p $LIBDIR
-mkdir -p $DOCDIR
-cp libxsql_mdb.so.$VER $LIBDIR
-ln -s libxsql_mdb.so.$VER $LIBDIR/libxsql_mdb.so
-cp copyright $DOCDIR
-cp changelog.Debian.gz $DOCDIR
-cd debian/$PACKAGE
-md5deep -r -l usr > DEBIAN/md5sums
-cd ..
-fakeroot dpkg-deb --build $PACKAGE
-mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
-rm -fr $PACKAGE/usr/*
-rmdir $PACKAGE/usr
-rm $PACKAGE/DEBIAN/md5sums
-cd ..
-
-PACKAGE=xsql-mysql
-VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
-LIBDIR=debian/$PACKAGE/usr/lib
-DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
-mkdir -p $LIBDIR
-mkdir -p $DOCDIR
-cp libxsql_mysql.so.$VER $LIBDIR
-ln -s libxsql_mysql.so.$VER $LIBDIR/libxsql_mysql.so
-cp copyright $DOCDIR
-cp changelog.Debian.gz $DOCDIR
-cd debian/$PACKAGE
-md5deep -r -l usr > DEBIAN/md5sums
-cd ..
-fakeroot dpkg-deb --build $PACKAGE
-mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
-rm -fr $PACKAGE/usr/*
-rmdir $PACKAGE/usr
-rm $PACKAGE/DEBIAN/md5sums
-cd ..
-
-PACKAGE=xsql-postgres
-VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
-LIBDIR=debian/$PACKAGE/usr/lib
-DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
-mkdir -p $LIBDIR
-mkdir -p $DOCDIR
-cp libxsql_pg.so.$VER $LIBDIR
-ln -s libxsql_pg.so.$VER $LIBDIR/libxsql_pg.so
-cp copyright $DOCDIR
-cp changelog.Debian.gz $DOCDIR
-cd debian/$PACKAGE
-md5deep -r -l usr > DEBIAN/md5sums
-cd ..
-fakeroot dpkg-deb --build $PACKAGE
-mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
-rm -fr $PACKAGE/usr/*
-rmdir $PACKAGE/usr
-rm $PACKAGE/DEBIAN/md5sums
-cd ..
-
-PACKAGE=xsql-sqlite
-VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
-LIBDIR=debian/$PACKAGE/usr/lib
-DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
-mkdir -p $LIBDIR
-mkdir -p $DOCDIR
-cp libxsql_sqlite.so.$VER $LIBDIR
-ln -s libxsql_sqlite.so.$VER $LIBDIR/libxsql_sqlite.so
-cp copyright $DOCDIR
-cp changelog.Debian.gz $DOCDIR
-cd debian/$PACKAGE
-md5deep -r -l usr > DEBIAN/md5sums
-cd ..
-fakeroot dpkg-deb --build $PACKAGE
-mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
-rm -fr $PACKAGE/usr/*
-rmdir $PACKAGE/usr
-rm $PACKAGE/DEBIAN/md5sums
-cd ..
-
-PACKAGE=xsql-xlsx
-VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
-LIBDIR=debian/$PACKAGE/usr/lib
-DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
-mkdir -p $LIBDIR
-mkdir -p $DOCDIR
-cp libxsql_xlsx.so.$VER $LIBDIR
-ln -s libxsql_xlsx.so.$VER $LIBDIR/libxsql_xlsx.so
-cp copyright $DOCDIR
-cp changelog.Debian.gz $DOCDIR
-cd debian/$PACKAGE
-md5deep -r -l usr > DEBIAN/md5sums
-cd ..
-fakeroot dpkg-deb --build $PACKAGE
-mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
-rm -fr $PACKAGE/usr/*
-rmdir $PACKAGE/usr
-rm $PACKAGE/DEBIAN/md5sums
-cd ..
-
-PACKAGE=xsql-util
-VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
-BINDIR=debian/$PACKAGE/usr/bin
-DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
-mkdir -p $BINDIR
-mkdir -p $DOCDIR
-cp xsql_config $BINDIR
-cp ixsql $BINDIR
-cp copyright $DOCDIR
-cp changelog.Debian.gz $DOCDIR
-cd debian/$PACKAGE
-md5deep -r -l usr > DEBIAN/md5sums
-cd ..
-fakeroot dpkg-deb --build $PACKAGE
-mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
-rm -fr $PACKAGE/usr/*
-rmdir $PACKAGE/usr
-rm $PACKAGE/DEBIAN/md5sums
-cd ..
+#!/bin/bash
+
+PACKAGE=xsql
+VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
+LIBDIR=debian/$PACKAGE/usr/lib
+DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
+mkdir -p $LIBDIR
+mkdir -p $DOCDIR
+cp libxsql.so.$VER $LIBDIR
+ln -s libxsql.so.$VER $LIBDIR/libxsql.so
+cp copyright $DOCDIR
+cp changelog.Debian.gz $DOCDIR
+cd debian/$PACKAGE
+md5deep -r -l usr > DEBIAN/md5sums
+cd ..
+fakeroot dpkg-deb --build $PACKAGE
+mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
+rm -fr $PACKAGE/usr/*
+rmdir $PACKAGE/usr
+rm $PACKAGE/DEBIAN/md5sums
+cd ..
+
+PACKAGE=xsql-dev
+VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
+LIBDIR=debian/$PACKAGE/usr/lib
+INCDIR=debian/$PACKAGE/usr/include/libxsql
+DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
+mkdir -p $LIBDIR/pkgconfig
+mkdir -p $DOCDIR
+mkdir -p $INCDIR
+cp libxsql.pc $LIBDIR/pkgconfig
+cp include/libxsql/* $INCDIR
+cp copyright $DOCDIR
+cp changelog.Debian.gz $DOCDIR
+cd debian/$PACKAGE
+md5deep -r -l usr > DEBIAN/md5sums
+cd ..
+fakeroot dpkg-deb --build $PACKAGE
+mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
+rm -fr $PACKAGE/usr/*
+rmdir $PACKAGE/usr
+rm $PACKAGE/DEBIAN/md5sums
+cd ..
+
+if [ -f ./libxsql-gds.so ]; then
+    PACKAGE=xsql-firebird
+    VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
+    LIBDIR=debian/$PACKAGE/usr/lib
+    DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
+    mkdir -p $LIBDIR $LIBDIR/xsqldb
+    mkdir -p $DOCDIR
+    cp libxsql_gds.so.$VER $LIBDIR/xsqldb
+    ln -s libxsql_gds.so.$VER $LIBDIR/libxsql_gds.so
+    cp copyright $DOCDIR
+    cp changelog.Debian.gz $DOCDIR
+    cd debian/$PACKAGE
+    md5deep -r -l usr > DEBIAN/md5sums
+    cd ..
+    fakeroot dpkg-deb --build $PACKAGE
+    mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
+    rm -fr $PACKAGE/usr/*
+    rmdir $PACKAGE/usr
+    rm $PACKAGE/DEBIAN/md5sums
+    cd ..
+fi
+
+if [ -f ./libxsql-mdb.so ]; then
+    PACKAGE=xsql-mdb
+    VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
+    LIBDIR=debian/$PACKAGE/usr/lib
+    DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
+    mkdir -p $LIBDIR $LIBDIR/xsqldb
+    mkdir -p $DOCDIR
+    cp libxsql_mdb.so.$VER $LIBDIR/xsqldb
+    ln -s libxsql_mdb.so.$VER $LIBDIR/libxsql_mdb.so
+    cp copyright $DOCDIR
+    cp changelog.Debian.gz $DOCDIR
+    cd debian/$PACKAGE
+    md5deep -r -l usr > DEBIAN/md5sums
+    cd ..
+    fakeroot dpkg-deb --build $PACKAGE
+    mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
+    rm -fr $PACKAGE/usr/*
+    rmdir $PACKAGE/usr
+    rm $PACKAGE/DEBIAN/md5sums
+    cd ..
+fi
+
+if [ -f ./libxsql-mysql.so ]; then
+    PACKAGE=xsql-mysql
+    VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
+    LIBDIR=debian/$PACKAGE/usr/lib
+    DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
+    mkdir -p $LIBDIR $LIBDIR/xsqldb
+    mkdir -p $DOCDIR
+    cp libxsql_mysql.so.$VER $LIBDIR/xsqldb
+    ln -s libxsql_mysql.so.$VER $LIBDIR/libxsql_mysql.so
+    cp copyright $DOCDIR
+    cp changelog.Debian.gz $DOCDIR
+    cd debian/$PACKAGE
+    md5deep -r -l usr > DEBIAN/md5sums
+    cd ..
+    fakeroot dpkg-deb --build $PACKAGE
+    mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
+    rm -fr $PACKAGE/usr/*
+    rmdir $PACKAGE/usr
+    rm $PACKAGE/DEBIAN/md5sums
+    cd ..
+fi
+
+if [ -f ./libxsql-pg.so ]; then
+    PACKAGE=xsql-postgres
+    VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
+    LIBDIR=debian/$PACKAGE/usr/lib
+    DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
+    mkdir -p $LIBDIR $LIBDIR/xsqldb
+    mkdir -p $DOCDIR
+    cp libxsql_pg.so.$VER $LIBDIR/xsqldb
+    ln -s libxsql_pg.so.$VER $LIBDIR/xsqldb
+    cp copyright $DOCDIR
+    cp changelog.Debian.gz $DOCDIR
+    cd debian/$PACKAGE
+    md5deep -r -l usr > DEBIAN/md5sums
+    cd ..
+    fakeroot dpkg-deb --build $PACKAGE
+    mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
+    rm -fr $PACKAGE/usr/*
+    rmdir $PACKAGE/usr
+    rm $PACKAGE/DEBIAN/md5sums
+    cd ..
+fi
+
+if [ -f ./libxsql-sqlite.so ]; then
+    PACKAGE=xsql-sqlite
+    VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
+    LIBDIR=debian/$PACKAGE/usr/lib
+    DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
+    mkdir -p $LIBDIR $LIBDIR/xsqldb
+    mkdir -p $DOCDIR
+    cp libxsql_sqlite.so.$VER $LIBDIR/xsqldb
+    ln -s libxsql_sqlite.so.$VER $LIBDIR/libxsql_sqlite.so
+    cp copyright $DOCDIR
+    cp changelog.Debian.gz $DOCDIR
+    cd debian/$PACKAGE
+    md5deep -r -l usr > DEBIAN/md5sums
+    cd ..
+    fakeroot dpkg-deb --build $PACKAGE
+    mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
+    rm -fr $PACKAGE/usr/*
+    rmdir $PACKAGE/usr
+    rm $PACKAGE/DEBIAN/md5sums
+    cd ..
+fi
+
+if [ -d ./libxsql-xlsx.so ]; then
+    PACKAGE=xsql-xlsx
+    VER=`cat debian/$PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`
+    LIBDIR=debian/$PACKAGE/usr/lib
+    DOCDIR=debian/$PACKAGE/usr/share/doc/$PACKAGE
+    mkdir -p $LIBDIR $LIBDIR/xsqlfmt
+    mkdir -p $DOCDIR
+    cp libxsql-xlsx.so.$VER $LIBDIR/xsqlfmt
+    ln -s libxsql-xlsx.so.$VER $LIBDIR/libxsql-xlsx.so
+    cp copyright $DOCDIR
+    cp changelog.Debian.gz $DOCDIR
+    cd debian/$PACKAGE
+    md5deep -r -l usr > DEBIAN/md5sums
+    cd ..
+    fakeroot dpkg-deb --build $PACKAGE
+    mv $PACKAGE.deb ../"$PACKAGE"_`cat $PACKAGE/DEBIAN/control | grep Version | awk '{print $2}'`_`cat $PACKAGE/DEBIAN/control | grep Architecture | awk '{print $2}'`.deb
+    rm -fr $PACKAGE/usr/*
+    rmdir $PACKAGE/usr
+    rm $PACKAGE/DEBIAN/md5sums
+    cd ..
+fi
diff --git a/src/config/Jamfile b/src/config/Jamfile
deleted file mode 100644 (file)
index 5cccfed..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-SubDir TOP src config ;
-
-Main xsql_config : xsql_config.c ;
-
-InstallBin bin : xsql_config$(SUFEXE) ;
-
-LinkLibraries xsql_config$(SUFEXE) : libxsql.a ;
diff --git a/src/config/xsql_config.c b/src/config/xsql_config.c
deleted file mode 100644 (file)
index bdc4a05..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <dlfcn.h>
-#include <libex/str.h>
-#include <libex/file.h>
-#include <libex/list.h>
-#include "db.h"
-
-#define CONF_XSQL "xsql.rc"
-#define CONF_PROVIDERS "providers"
-#define CONF_FORMATTERS "formatters"
-
-strptr_t conf_providers [] = {
-    CONST_STR_INIT("libxsql_gds.so"),
-    CONST_STR_INIT("libxsql_mdb.so"),
-    CONST_STR_INIT("libxsql_mysql.so"),
-    CONST_STR_INIT("libxsql_pg.so"),
-    CONST_STR_INIT("libxsql_sqlite.so")
-};
-strptr_t conf_formatters [] = {
-    CONST_STR_INIT("libxsql_xlsx.so")
-};
-
-str_t *providers = NULL,
-      *formatters = NULL;
-
-const char *dbfuncs [] = {
-    "get_placeholder", "dbopen", "dbclose", "sqlprepare", "sqlexec", "sqlexec_direct", "fetch", "sqlclose"
-};
-
-const char *fmtfuncs [] = {
-    "fmtwrtname", "fmtopen", "fmtwrtopen", "fmtstart_outrec", "fmtoutrec", "fmtend_outrec", "fmtstart_outvar",
-    "fmtoutvar", "fmtwrtvar", "fmtwrtstr", "fmtend_outvar", "fmtwrtend", "fmtclose", "fmtwrtclose",
-    "fmtplot", "fmtsetbg", "fmtsetfg"
-};
-
-static void load_xsql_conf () {
-    load_conf(CONF_XSQL, CONF_HANDLER
-        ASSIGN_CONF_STR(providers, CONF_PROVIDERS)
-        ASSIGN_CONF_STR(formatters, CONF_FORMATTERS)
-    CONF_HANDLER_END);
-}
-
-static void free_xsql_conf () {
-    if (providers) free(providers);
-    providers = NULL;
-    if (formatters) free(formatters);
-    formatters = NULL;
-}
-
-static void show_conf_items (str_t *conf_val) {
-    int n;
-    strptr_t val = { .ptr = conf_val->ptr, .len = conf_val->len };
-    strptr_t tok;
-    while ((n = strntok(&val.ptr, &val.len, CONST_STR_LEN(STR_SPACES), &tok)) > 0) {
-        char *s = strndup(tok.ptr, tok.len);
-        printf("\t%s\n", s);
-        free(s);
-    }
-}
-
-static void show () {
-    load_xsql_conf();
-    printf("Providers:\n");
-    if (providers)
-        show_conf_items(providers);
-    printf("Formatters:\n");
-    if (formatters)
-        show_conf_items(formatters);
-    free_xsql_conf();
-}
-
-static int check_lib (const char *libname, const char *fnames[], int size, const char *fname) {
-    int rc = 0;
-    void *hnd = dlopen(libname, RTLD_LAZY);
-    if (!hnd) return -1;
-    xsql_dbprov_name_h get_provider_name = (xsql_dbprov_name_h)dlsym(hnd, fname);
-    if (!get_provider_name) {
-        dlclose(hnd);
-        return -1;
-    }
-    for (int i = 0; i < size; ++i) {
-        if (!dlsym(hnd, fnames[i])) {
-            rc = -1;
-            break;
-        }
-    }
-    if (-1 == rc)
-        return -1;
-    printf("%s found\n", get_provider_name());
-    return 0;
-}
-
-static str_t *gen (strptr_t *name, const char *fnames[], int fsize, const char *fname) {
-    str_t *res = NULL;
-    char cmd [256];
-    FILE *f;
-    snprintf(cmd, sizeof cmd, "whereis %s", name->ptr);
-    if ((f = popen(cmd, "r"))) {
-        ssize_t readed;
-        size_t n = 0;
-        char *p, *line = NULL;
-        str_t *s = stralloc(128, 128);
-        while (-1 != (readed = getline(&line, &n, f))) {
-            if (s->len > 0) {
-                printf("too many libraries, see whereis %s\n", name->ptr);
-                s->len = 0;
-                break;
-            }
-            strnadd(&s, line, readed);
-        }
-        if ((p = strnchr(s->ptr, ':', s->len))) {
-            size_t len = s->len - ((uintptr_t)p - (uintptr_t)s->ptr);
-            strptr_t p_name;
-            while (strntok(&p, &len, CONST_STR_LEN(STR_SPACES), &p_name) >= 0 && p_name.len > 0) {
-                strptr_t f_name;
-                if (0 == getfname(p_name.ptr, p_name.len, &f_name) &&
-                    0 == cmpstr(f_name.ptr, f_name.len, name->ptr, name->len)) {
-                    res = mknstr(p_name.ptr, p_name.len, 8);
-                    if (0 == check_lib(res->ptr, fnames, fsize, fname))
-                        break;
-                    free(res);
-                    res = NULL;
-                }
-            }
-        }
-        /*if ((p = strnchr(s->ptr, ':', s->len))) {
-            ++p;
-            while (isspace(*p)) ++p;
-            if ('\0' != *p) {
-                char *q = p;
-                while (!isspace(*q)) ++q;
-                res = mknstr(p, s->len - ((uintptr_t)p - (uintptr_t)s->ptr), 8);
-                res->len--;
-                res->ptr[res->len] = '\0';
-                if (-1 == check_lib(res->ptr, fnames, fsize, fname)) {
-                    free(res);
-                    res = NULL;
-                }
-            }
-            free(s);
-        }*/
-        free(s);
-        if (line) free(line);
-        pclose(f);
-    }
-    return res;
-}
-
-static list_t *enum_dlibs (strptr_t *confs, size_t size, const char *fnames[], int fsize, const char *fname) {
-    list_t *lst = lst_alloc(on_default_free_item);
-    for (int i = 0; i < size; ++i) {
-        str_t *s = gen(&confs[i], fnames, fsize, fname);
-        if (s) lst_adde(lst, s);
-    }
-    return lst;
-}
-
-static void upgrade (int fd, const char *hdr, strptr_t *confs, size_t size, const char *fnames[], int fsize, const char *fname) {
-    list_t *lst = enum_dlibs(confs, size, fnames, fsize, fname);
-    list_item_t *li;
-    if ((li = lst->head)) {
-        str_t *s = (str_t*)li->ptr;
-        write(fd, hdr, strlen(hdr));
-        write(fd, s->ptr, s->len);
-        li = li->next;
-        while (li != lst->head) {
-            s = (str_t*)li->ptr;
-            write(fd, CONST_STR_LEN(","));
-            write(fd, s->ptr, s->len);
-            li = li->next;
-        }
-    }
-    lst_free(lst);
-    write(fd, CONST_STR_LEN("\n"));
-}
-
-static void upgrade_conf (const char *rc_path) {
-    int fd = open(rc_path, O_CREAT | O_TRUNC | O_WRONLY, 0644);
-    if (fd) {
-        upgrade(fd, "providers=", conf_providers, sizeof(conf_providers)/sizeof(strptr_t), dbfuncs, sizeof(dbfuncs)/sizeof(void*), "get_provider_name");
-        upgrade(fd, "formatters=", conf_formatters, sizeof(conf_formatters)/sizeof(strptr_t), fmtfuncs, sizeof(fmtfuncs)/sizeof(void*), "fmtname");
-        close(fd);
-    }
-}
-
-static void help (int argc, const char *argv[]) {
-    printf("%s options\n", argv[0]);
-    printf(" -v show plugins\n");
-    printf(" -u update file configuration /etc/xsql.rc\n");
-}
-
-int main (int argc, const char *argv[]) {
-    if (2 == argc && 0 == strcmp(argv[1], "-v")) {
-        show();
-        return 0;
-    }
-    if (2 == argc && 0 == strcmp(argv[1], "-u")) {
-        str_t *rc_path = NULL;
-        if (0 == getuid())
-            rc_path = mknstr(CONST_STR_LEN("/etc/xsql.rc"), 8);
-        else {
-            rc_path = get_spec_path(DIR_HOME);
-            rc_path = path_add_path(rc_path, ".xsql.rc", NULL);
-        }
-        upgrade_conf(rc_path->ptr);
-        free(rc_path);
-        return 0;
-    }
-    help(argc, argv);
-    return 0;
-}
index 5129ccc..1b9ee20 100644 (file)
@@ -1,4 +1,4 @@
 SubDir TOP src excel ;
-SharedLibrary libxsql_xlsx$(SUFSHR) : xsql_xlsx.c ;
-InstallBin lib/xsqlfmt : libxsql_xlsx$(SUFSHR) ;
-LINKLIBS on libxsql_xlsx$(SUFSHR) = -lxlsxwriter ;
+SharedLibrary libxsql-xlsx$(SUFSHR) : xsql_xlsx.c ;
+InstallBin lib/xsqlfmt : libxsql-xlsx$(SUFSHR) ;
+LINKLIBS on libxsql-xlsx$(SUFSHR) = -lxlsxwriter ;