GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
SDB(3) FreeBSD Library Functions Manual SDB(3)

sdb_init, sdb_open, sdb_query, sdb_close - the Simple Database Library.

#include <sdb.h>

void sdb_init();
char *sdb_open(char *url);
void sdb_close(char *id);
int sdb_query(char *url, char *query, int (*callback)(int, char **, void *), void *closure);

The SDB library allows applications to support multiple database management systems with negligeable overhead, in terms of code as well as system resources.

sdb_init() initializes the library and registers the database drivers. It is not necessary to call sdb_init explicitly, since it will be done automatically when needed.

sdb_open() opens a database connection that can be used for multiple queries. This is optional; calling sdb_query directly will simply open and close the connection for each query. sdb_open returns a connection id which is used in place of the url in calls to sdb_query.

sdb_query() calls the callback once for each row returned. No rows does not indicate an error condition. sdb_query returns the number of rows or -1 for error. The callback takes three arguments, an integer indicating the number of columns in the result, an array of pointers to the fields and a pointer to some arbitrary data that the callback might need. Values are always returned as strings.

sdb_close() closes the database connection opened by sdb_open.

This minimal program runs queries from the command line.

#include <stdio.h>
#include <stdlib.h>
#include <sdb.h>
static int callback(int n, char **p, void *closure)
{
    int i;
    for (i = 0; i < n; i++) {
        printf("%s\t", p[i]);
    }
    printf("0);
    return 0;
}
int main(int argc, char **argv)
{
    if (argc != 3) {
        fprintf(stderr, "Usage: sdb_demo url query\n");
        return EXIT_FAILURE;
    }
    sdb_query(argv[1], argv[2], callback, NULL);
    return EXIT_SUCCESS;
}

This program can be used to authenticate Squid proxy users.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sdb.h>
static int cb_db(int n, char **p, void *closure)
{
    return 0;
}
int main(int argc, char **argv)
{
    char *url, query[1024];
    int n;
    char buf[256];
    char *user, *passwd, *p;
    setbuf(stdout, NULL);
    if (argc != 2) {
        fprintf(stderr, "Usage: sdb_auth url\n");
        exit(1);
    }
    url = argv[1];
    while (fgets(buf, 256, stdin) != NULL) {
        if ((p = strchr(buf, '\n')) != NULL)
            *p = '\0';          /* strip \n */
        if ((user = strtok(buf, " ")) == NULL) {
            printf("ERR\n");
            continue;
        }
        if ((passwd = strtok(NULL, "")) == NULL) {
            printf("ERR\n");
            continue;
        }
        sprintf(query,
                "select * from htpasswd "
                "where user = '%s' "
                "and passwd = '%s'",
                user, passwd);
        n = sdb_query(url, query, cb_db, NULL);
        if (n < 1) {
            printf("ERR\n");
        } else {
            printf("OK\n");
        }
    }
    exit(0);
}

sdbd.8

Example clients in sdb_client.c and sdbd_client.c.

Copyright (c) 2000-2005 Ulric Eriksson <ulric@siag.nu>

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the Licence, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.

You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

LOCAL

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.