root/source4/lib/ldb/tools/ldbrename.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. usage
  2. main

   1 /* 
   2    ldb database library
   3 
   4    Copyright (C) Andrew Tridgell  2004
   5    Copyright (C) Stefan Metzmacher  2004
   6 
   7      ** NOTE! The following LGPL license applies to the ldb
   8      ** library. This does NOT imply that all of Samba is released
   9      ** under the LGPL
  10    
  11    This library is free software; you can redistribute it and/or
  12    modify it under the terms of the GNU Lesser General Public
  13    License as published by the Free Software Foundation; either
  14    version 3 of the License, or (at your option) any later version.
  15 
  16    This library is distributed in the hope that it will be useful,
  17    but WITHOUT ANY WARRANTY; without even the implied warranty of
  18    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  19    Lesser General Public License for more details.
  20 
  21    You should have received a copy of the GNU Lesser General Public
  22    License along with this library; if not, see <http://www.gnu.org/licenses/>.
  23 */
  24 
  25 /*
  26  *  Name: ldb
  27  *
  28  *  Component: ldbrename
  29  *
  30  *  Description: utility to rename records - modelled on ldapmodrdn
  31  *
  32  *  Author: Andrew Tridgell
  33  *  Author: Stefan Metzmacher
  34  */
  35 
  36 #include "ldb.h"
  37 #include "tools/cmdline.h"
  38 
  39 static void usage(void)
     /* [<][>][^][v][top][bottom][index][help] */
  40 {
  41         printf("Usage: ldbrename [<options>] <olddn> <newdn>\n");
  42         printf("Options:\n");
  43         printf("  -H ldb_url       choose the database (or $LDB_URL)\n");
  44         printf("  -o options       pass options like modules to activate\n");
  45         printf("              e.g: -o modules:timestamps\n");
  46         printf("\n");
  47         printf("Renames records in a ldb\n\n");
  48         exit(1);
  49 }
  50 
  51 
  52 int main(int argc, const char **argv)
     /* [<][>][^][v][top][bottom][index][help] */
  53 {
  54         struct ldb_context *ldb;
  55         int ret;
  56         struct ldb_cmdline *options;
  57         struct ldb_dn *dn1, *dn2;
  58 
  59         ldb = ldb_init(NULL, NULL);
  60 
  61         options = ldb_cmdline_process(ldb, argc, argv, usage);
  62 
  63         if (options->argc < 2) {
  64                 usage();
  65         }
  66 
  67         dn1 = ldb_dn_new(ldb, ldb, options->argv[0]);
  68         dn2 = ldb_dn_new(ldb, ldb, options->argv[1]);
  69 
  70         if ( ! ldb_dn_validate(dn1)) {
  71                 printf("Invalid DN1: %s\n", options->argv[0]);
  72                 return -1;
  73         }
  74         if ( ! ldb_dn_validate(dn2)) {
  75                 printf("Invalid DN2: %s\n", options->argv[1]);
  76                 return -1;
  77         }
  78 
  79         ret = ldb_rename(ldb, dn1, dn2);
  80         if (ret == 0) {
  81                 printf("Renamed 1 record\n");
  82         } else  {
  83                 printf("rename of '%s' to '%s' failed - %s\n", 
  84                         options->argv[0], options->argv[1], ldb_errstring(ldb));
  85         }
  86 
  87         talloc_free(ldb);
  88         
  89         return ret;
  90 }

/* [<][>][^][v][top][bottom][index][help] */