X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fdird%2Fua_query.c;h=354b596b4910a42b6280f0419022c62443d364c9;hb=c2e85cfe39725395ed5a383ec5c3e31c1e88d1b1;hp=6e1a3c2b845a6ad51123bb4a422a444525d1ac7a;hpb=7313af1d71e8bc6c95792526d437973369ab5a35;p=bacula%2Fbacula diff --git a/bacula/src/dird/ua_query.c b/bacula/src/dird/ua_query.c index 6e1a3c2b84..354b596b49 100644 --- a/bacula/src/dird/ua_query.c +++ b/bacula/src/dird/ua_query.c @@ -7,19 +7,32 @@ * Version $Id$ */ /* - Copyright (C) 2001-2005 Kern Sibbald + Bacula® - The Network Backup Solution - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - version 2 as amended with additional clauses defined in the - file LICENSE in the main source directory. + Copyright (C) 2001-2006 Free Software Foundation Europe e.V. - This program 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 - the file LICENSE for additional details. + The main author of Bacula is Kern Sibbald, with contributions from + many others, a complete list can be found in the file AUTHORS. + This program is Free Software; you can redistribute it and/or + modify it under the terms of version three of the GNU Affero General Public + License as published by the Free Software Foundation and included + in the file LICENSE. - */ + This program 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 + General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. + + Bacula® is a registered trademark of Kern Sibbald. + The licensor of Bacula is the Free Software Foundation Europe + (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, + Switzerland, email:ftf@fsfeurope.org. +*/ #include "bacula.h" #include "dird.h" @@ -52,12 +65,13 @@ int querycmd(UAContext *ua, const char *cmd) int nprompt = 0;; char *query_file = director->query_file; - if (!open_db(ua)) { + if (!open_client_db(ua)) { goto bail_out; } if ((fd=fopen(query_file, "rb")) == NULL) { - bsendmsg(ua, _("Could not open %s: ERR=%s\n"), query_file, - strerror(errno)); + berrno be; + ua->error_msg(_("Could not open %s: ERR=%s\n"), query_file, + be.bstrerror()); goto bail_out; } @@ -82,7 +96,7 @@ int querycmd(UAContext *ua, const char *cmd) } } if (i != item) { - bsendmsg(ua, _("Could not find query.\n")); + ua->error_msg(_("Could not find query.\n")); goto bail_out; } query[0] = 0; @@ -100,7 +114,7 @@ int querycmd(UAContext *ua, const char *cmd) len = strlen(line); if (line[0] == '*') { /* prompt */ if (nprompt >= 9) { - bsendmsg(ua, _("Too many prompts in query, max is 9.\n")); + ua->error_msg(_("Too many prompts in query, max is 9.\n")); } else { line[len++] = ' '; line[len] = 0; @@ -122,7 +136,7 @@ int querycmd(UAContext *ua, const char *cmd) if (query[0] == '!') { db_list_sql_query(ua->jcr, ua->db, query+1, prtit, ua, 0, VERT_LIST); } else if (!db_list_sql_query(ua->jcr, ua->db, query, prtit, ua, 1, HORZ_LIST)) { - bsendmsg(ua, "%s\n", query); + ua->send_msg("%s\n", query); } query[0] = 0; } @@ -134,7 +148,7 @@ int querycmd(UAContext *ua, const char *cmd) if (query[0] == '!') { db_list_sql_query(ua->jcr, ua->db, query+1, prtit, ua, 0, VERT_LIST); } else if (!db_list_sql_query(ua->jcr, ua->db, query, prtit, ua, 1, HORZ_LIST)) { - bsendmsg(ua, "%s\n", query); + ua->error_msg("%s\n", query); } } @@ -194,7 +208,7 @@ static POOLMEM *substitute_prompts(UAContext *ua, } len = strlen(ua->cmd); p = (char *)malloc(len * 2 + 1); - db_escape_string(p, ua->cmd, len); + db_escape_string(ua->jcr, ua->db, p, ua->cmd, len); subst[n] = p; olen = o - new_query; new_query = check_pool_memory_size(new_query, olen + strlen(p) + 10); @@ -203,7 +217,7 @@ static POOLMEM *substitute_prompts(UAContext *ua, *o++ = *p++; } } else { - bsendmsg(ua, _("Warning prompt %d missing.\n"), n+1); + ua->error_msg(_("Warning prompt %d missing.\n"), n+1); } q += 2; break; @@ -239,17 +253,16 @@ static POOLMEM *substitute_prompts(UAContext *ua, */ int sqlquerycmd(UAContext *ua, const char *cmd) { - POOLMEM *query = get_pool_memory(PM_MESSAGE); + POOL_MEM query(PM_MESSAGE); int len; const char *msg; - if (!open_db(ua)) { - free_pool_memory(query); + if (!open_client_db(ua)) { return 1; } - *query = 0; + *query.c_str() = 0; - bsendmsg(ua, _("Entering SQL query mode.\n" + ua->send_msg(_("Entering SQL query mode.\n" "Terminate each query with a semicolon.\n" "Terminate query mode with a blank line.\n")); msg = _("Enter SQL query: "); @@ -259,22 +272,20 @@ int sqlquerycmd(UAContext *ua, const char *cmd) if (len == 0) { break; } - query = check_pool_memory_size(query, len + 1); - if (*query != 0) { + if (*query.c_str() != 0) { pm_strcat(query, " "); } pm_strcat(query, ua->cmd); if (ua->cmd[len-1] == ';') { ua->cmd[len-1] = 0; /* zap ; */ /* Submit query */ - db_list_sql_query(ua->jcr, ua->db, query, prtit, ua, 1, HORZ_LIST); - *query = 0; /* start new query */ + db_list_sql_query(ua->jcr, ua->db, query.c_str(), prtit, ua, 1, HORZ_LIST); + *query.c_str() = 0; /* start new query */ msg = _("Enter SQL query: "); } else { msg = _("Add to SQL query: "); } } - free_pool_memory(query); - bsendmsg(ua, _("End query mode.\n")); + ua->send_msg(_("End query mode.\n")); return 1; }