s3-printing: fix migrate printer code (bug 8618)
authorBjörn Baumbach <bb@sernet.de>
Fri, 18 Nov 2011 17:54:56 +0000 (18:54 +0100)
committerKarolin Seeger <kseeger@samba.org>
Tue, 10 Jan 2012 20:01:08 +0000 (21:01 +0100)
Removed path from driver files.
We only need the basenames.

source3/printing/nt_printing_migrate.c

index e927a233a1c16f54cd2bb5728fa04db9cefc501b..6eb2f449986bd1cfe66ecad31bc2282adb38f433 100644 (file)
@@ -3,6 +3,7 @@
  *  RPC Pipe client / server routines
  *
  *  Copyright (c) Andreas Schneider            2010.
+ *  Copyright (C) Bjoern Baumbach <bb@sernet.de> 2011
  *
  *  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
 #include "librpc/gen_ndr/ndr_security.h"
 #include "rpc_client/cli_winreg_spoolss.h"
 
+static const char *driver_file_basename(const char *file)
+{
+       const char *basefile;
+
+       basefile = strrchr(file, '\\');
+       if (basefile == NULL) {
+               basefile = file;
+       } else {
+               basefile++;
+       }
+
+       return basefile;
+}
+
 NTSTATUS printing_tdb_migrate_form(TALLOC_CTX *mem_ctx,
                                   struct rpc_pipe_client *winreg_pipe,
                                   const char *key_name,
@@ -100,6 +115,7 @@ NTSTATUS printing_tdb_migrate_driver(TALLOC_CTX *mem_ctx,
        WERROR result;
        const char *driver_name;
        uint32_t driver_version;
+       int i;
 
        blob = data_blob_const(data, length);
 
@@ -118,8 +134,19 @@ NTSTATUS printing_tdb_migrate_driver(TALLOC_CTX *mem_ctx,
        ZERO_STRUCT(d3);
        ZERO_STRUCT(a);
 
+       /* remove paths from file names */
+       if (r.dependent_files != NULL) {
+               for (i = 0 ; r.dependent_files[i] != NULL; i++) {
+                       r.dependent_files[i] = driver_file_basename(r.dependent_files[i]);
+               }
+       }
        a.string = r.dependent_files;
 
+       r.driverpath = driver_file_basename(r.driverpath);
+       r.configfile = driver_file_basename(r.configfile);
+       r.datafile = driver_file_basename(r.datafile);
+       r.helpfile = driver_file_basename(r.helpfile);
+
        d3.architecture = r.environment;
        d3.config_file = r.configfile;
        d3.data_file = r.datafile;