Fix out of tree build. Remove the embedded srcdir path from talloc and tdb.
[ira/wip.git] / testsuite / printing / vlp.c
index 2dd028fcd3866049591b34f771aa67a0c8c2f8d9..15459889e9fc50ffd55171b8e14eefbc158d4bc6 100644 (file)
@@ -7,7 +7,7 @@
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
@@ -16,8 +16,7 @@
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "includes.h"
@@ -54,7 +53,7 @@ static void get_job_list(char *printer, struct vlp_job **job_list,
        TDB_DATA data;
 
        slprintf(keystr, sizeof(keystr) - 1, "LPQ/%s", printer);
-       data = tdb_fetch_by_string(tdb, keystr);
+       data = tdb_fetch_bystring(tdb, keystr);
 
        *job_list = (struct vlp_job *)data.dptr;
        *num_jobs = data.dsize / sizeof(struct vlp_job);
@@ -66,11 +65,13 @@ static void set_job_list(char *printer, struct vlp_job *job_list,
                         int num_jobs)
 {
        fstring keystr;
+       TDB_DATA data;
 
        slprintf(keystr, sizeof(keystr) - 1, "LPQ/%s", printer);
 
-       tdb_store_by_string(tdb, keystr, job_list, 
-                           num_jobs * sizeof(struct vlp_job));
+       data.dptr = (unsigned char *)job_list;
+       data.dsize = num_jobs * sizeof(struct vlp_job);
+       tdb_store_bystring(tdb, keystr, data, TDB_REPLACE);
 }
 
 /* Return the next job number for a printer */
@@ -84,7 +85,7 @@ static int next_jobnum(char *printer)
 
        tdb_lock_bystring(tdb, keystr);
 
-       jobnum = tdb_fetch_int(tdb, keystr);
+       jobnum = tdb_fetch_int32(tdb, keystr);
 
        /* Create next job index if none exists */
 
@@ -93,7 +94,7 @@ static int next_jobnum(char *printer)
        }
 
        jobnum++;
-       tdb_store_int(tdb, keystr, jobnum);
+       tdb_store_int32(tdb, keystr, jobnum);
 
        tdb_unlock_bystring(tdb, keystr);
 
@@ -106,7 +107,7 @@ static void set_printer_status(char *printer, int status)
        int result;
 
        slprintf(keystr, sizeof(keystr) - 1, "STATUS/%s", printer);
-       result = tdb_store_int(tdb, keystr, status);
+       result = tdb_store_int32(tdb, keystr, status);
 }
 
 static int get_printer_status(char *printer)
@@ -116,7 +117,7 @@ static int get_printer_status(char *printer)
 
        slprintf(keystr, sizeof(keystr) - 1, "STATUS/%s", printer);
 
-       data.dptr = keystr;
+       data.dptr = (unsigned char *)keystr;
        data.dsize = strlen(keystr) + 1;
 
        if (!tdb_exists(tdb, data)) {
@@ -124,7 +125,7 @@ static int get_printer_status(char *printer)
                return LPSTAT_OK;
        }
 
-       return tdb_fetch_int(tdb, keystr);
+       return tdb_fetch_int32(tdb, keystr);
 }
 
 /* Display printer queue */
@@ -213,7 +214,7 @@ static int print_command(int argc, char **argv)
        char *printer;
        fstring keystr;
        struct passwd *pw;
-       TDB_DATA value;
+       TDB_DATA value, queue;
        struct vlp_job job;
        int i;
 
@@ -248,30 +249,34 @@ static int print_command(int argc, char **argv)
        /* Store job entry in queue */
 
        slprintf(keystr, sizeof(keystr) - 1, "LPQ/%s", printer);
-       
-       value = tdb_fetch_by_string(tdb, keystr);
+
+       value = tdb_fetch_bystring(tdb, keystr);
 
        if (value.dptr) {
 
                /* Add job to end of queue */
 
-               value.dptr = realloc(value.dptr, value.dsize + 
-                                    sizeof(struct vlp_job));
-               if (!value.dptr) return 1;
+               queue.dptr = (unsigned char *)SMB_MALLOC(value.dsize +
+                                                       sizeof(struct vlp_job));
+               if (!queue.dptr) return 1;
+
+               memcpy(queue.dptr, value.dptr, value.dsize);
+               memcpy(queue.dptr + value.dsize, &job, sizeof(struct vlp_job));
 
-               memcpy(value.dptr + value.dsize, &job, sizeof(struct vlp_job));
+               queue.dsize = value.dsize + sizeof(struct vlp_job);
 
-               tdb_store_by_string(tdb, keystr, value.dptr, value.dsize +
-                                   sizeof(struct vlp_job));
+               tdb_store_bystring(tdb, keystr, queue, TDB_REPLACE);
 
-               free(value.dptr);
+               free(queue.dptr);
 
        } else {
-               
+
                /* Create new queue */
+               queue.dptr = (unsigned char *)&job;
+               queue.dsize = sizeof(struct vlp_job);
 
-               tdb_store_by_string(tdb, keystr, &job, sizeof(struct vlp_job));
-       }               
+               tdb_store_bystring(tdb, keystr, queue, TDB_REPLACE);
+       }
 
        return 0;
 }