~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/internal/default.cc

  • Committer: Olaf van der Spek
  • Date: 2011-03-23 10:31:37 UTC
  • mto: (2247.1.1 build)
  • mto: This revision was merged to the branch mainline in revision 2248.
  • Revision ID: olafvdspek@gmail.com-20110323103137-lwevis2tfchgu18u
Propogate return void

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
 --print-defaults         ; Print the modified command line and exit
34
34
****************************************************************************/
35
35
 
36
 
#include "config.h"
 
36
#include <config.h>
37
37
 
38
 
#include "drizzled/internal/my_sys.h"
39
 
#include "drizzled/internal/m_string.h"
40
 
#include "drizzled/charset_info.h"
 
38
#include <drizzled/internal/my_sys.h>
 
39
#include <drizzled/internal/m_string.h>
 
40
#include <drizzled/charset_info.h>
 
41
#include <drizzled/typelib.h>
41
42
#include <drizzled/configmake.h>
42
43
#include <drizzled/gettext.h>
43
 
 
44
 
#include "drizzled/cached_directory.h"
 
44
#include <drizzled/dynamic_array.h>
 
45
#include <drizzled/cached_directory.h>
45
46
 
46
47
#ifdef HAVE_SYS_STAT_H
47
48
# include <sys/stat.h>
287
288
  if (!option)
288
289
    return 0;
289
290
 
290
 
  if (find_type((char *)group_name, ctx->group, 3))
 
291
  if (ctx->group->find_type(const_cast<char*>(group_name), 3))
291
292
  {
292
293
    if (!(tmp= (char *)ctx->alloc->alloc_root(strlen(option) + 1)))
293
294
      return 1;
294
 
    if (insert_dynamic(ctx->args, (unsigned char*) &tmp))
295
 
      return 1;
 
295
    ctx->args->push_back(&tmp);
296
296
    strcpy(tmp, option);
297
297
  }
298
298
 
448
448
    Here error contains <> 0 only if we have a fully specified conf_file
449
449
    or a forced default file
450
450
  */
451
 
  if (!(ptr=(char*) alloc.alloc_root(sizeof(alloc)+ (args.elements + *argc +1) *sizeof(char*))))
 
451
  if (!(ptr=(char*) alloc.alloc_root(sizeof(alloc)+ (args.size() + *argc +1) *sizeof(char*))))
452
452
    goto err;
453
453
  res= (char**) (ptr+sizeof(alloc));
454
454
 
455
455
  /* copy name + found arguments + command line arguments to new array */
456
456
  res[0]= argv[0][0];  /* Name MUST be set, even by embedded library */
457
 
  memcpy(res+1, args.buffer, args.elements*sizeof(char*));
 
457
  memcpy(res+1, args.buffer, args.size()*sizeof(char*));
458
458
  /* Skip --defaults-xxx options */
459
459
  (*argc)-= args_used;
460
460
  (*argv)+= args_used;
464
464
    This options must always be the last of the default options
465
465
  */
466
466
  if (*argc)
467
 
    memcpy(res+1+args.elements, *argv + 1, (*argc-1)*sizeof(char*));
468
 
  res[args.elements+ *argc]=0;                  /* last null */
 
467
    memcpy(res+1+args.size(), *argv + 1, (*argc-1)*sizeof(char*));
 
468
  res[args.size()+ *argc]=0;                    /* last null */
469
469
 
470
 
  (*argc)+=int(args.elements);
 
470
  (*argc)+=int(args.size());
471
471
  *argv= static_cast<char**>(res);
472
472
  *(memory::Root*) ptr= alloc;                  /* Save alloc root for free */
473
473
  delete_dynamic(&args);
945
945
  This extra complexity is to avoid declaring 'rc' if it won't be
946
946
  used.
947
947
*/
948
 
#define ADD_DIRECTORY(DIR)  (void) array_append_string_unique((DIR), default_directories, \
949
 
                             array_elements(default_directories))
950
 
 
951
 
#define ADD_COMMON_DIRECTORIES() \
952
 
  do { \
953
 
    const char *env; \
954
 
    if ((env= getenv("DRIZZLE_HOME"))) \
955
 
      ADD_DIRECTORY(env); \
956
 
    /* Placeholder for --defaults-extra-file=<path> */ \
957
 
    ADD_DIRECTORY(""); \
958
 
  } while (0)
959
 
 
 
948
static void add_directory(const char* dir)
 
949
{
 
950
  array_append_string_unique(dir, default_directories, array_elements(default_directories));
 
951
}
 
952
 
 
953
static void add_common_directories()
 
954
{
 
955
  const char *env= getenv("DRIZZLE_HOME"); 
 
956
  if (env) 
 
957
    add_directory(env); 
 
958
  // Placeholder for --defaults-extra-file=<path>
 
959
  add_directory(""); 
 
960
}
960
961
 
961
962
/**
962
963
  Initialize default directories for Unix
973
974
static void init_default_directories(void)
974
975
{
975
976
  memset(default_directories, 0, sizeof(default_directories));
976
 
  ADD_DIRECTORY("/etc/");
977
 
  ADD_DIRECTORY("/etc/drizzle/");
978
 
  ADD_DIRECTORY(SYSCONFDIR);
979
 
  ADD_COMMON_DIRECTORIES();
980
 
  ADD_DIRECTORY("~/");
 
977
  add_directory("/etc/");
 
978
  add_directory("/etc/drizzle/");
 
979
  add_directory(SYSCONFDIR);
 
980
  add_common_directories();
 
981
  add_directory("~/");
981
982
}
982
983
 
983
984
} /* namespace internal */