X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fdird%2Fnewvol.c;h=6a542caa4d7b5f0e0b40baf2429359e494a792be;hb=4f7896c56213a88d17777db9041a9643ae541c5f;hp=7038aae3a702972253ed5acf631c9d85da5a0c7b;hpb=a99080b63218b00f4f58416e08365ce49404abf7;p=bacula%2Fbacula diff --git a/bacula/src/dird/newvol.c b/bacula/src/dird/newvol.c index 7038aae3a7..6a542caa4d 100644 --- a/bacula/src/dird/newvol.c +++ b/bacula/src/dird/newvol.c @@ -8,27 +8,22 @@ * This routine runs as a thread and must be thread reentrant. * * Basic tasks done here: - * If possible create a new Media entry + * If possible create a new Media entry * * Version $Id$ */ /* - Copyright (C) 2001-2005 Kern Sibbald + Copyright (C) 2000-2006 Kern Sibbald 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 (at your option) any later version. + 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. 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 General Public - License along with this program; if not, write to the Free - Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + the file LICENSE for additional details. */ @@ -63,35 +58,38 @@ bool newVolume(JCR *jcr, MEDIA_DBR *mr) set_pool_dbr_defaults_in_media_dbr(mr, &pr); jcr->VolumeName[0] = 0; bstrncpy(mr->MediaType, jcr->store->media_type, sizeof(mr->MediaType)); - if (generate_event(jcr, "NewVolume") == 1 && jcr->VolumeName[0] && - is_volume_name_legal(NULL, jcr->VolumeName)) { - bstrncpy(mr->VolumeName, jcr->VolumeName, sizeof(mr->VolumeName)); + if (generate_job_event(jcr, "NewVolume") == 1 && jcr->VolumeName[0] && + is_volume_name_legal(NULL, jcr->VolumeName)) { + bstrncpy(mr->VolumeName, jcr->VolumeName, sizeof(mr->VolumeName)); /* Check for special characters */ } else if (pr.LabelFormat[0] && pr.LabelFormat[0] != '*') { - if (is_volume_name_legal(NULL, pr.LabelFormat)) { - /* No special characters, so apply simple algorithm */ - if (!create_simple_name(jcr, mr, &pr)) { - goto bail_out; - } - } else { /* try full substitution */ - /* Found special characters, so try substitution */ - if (!perform_full_name_substitution(jcr, mr, &pr)) { - goto bail_out; - } - if (!is_volume_name_legal(NULL, mr->VolumeName)) { + if (is_volume_name_legal(NULL, pr.LabelFormat)) { + /* No special characters, so apply simple algorithm */ + if (!create_simple_name(jcr, mr, &pr)) { + goto bail_out; + } + } else { /* try full substitution */ + /* Found special characters, so try substitution */ + if (!perform_full_name_substitution(jcr, mr, &pr)) { + goto bail_out; + } + if (!is_volume_name_legal(NULL, mr->VolumeName)) { Jmsg(jcr, M_ERROR, 0, _("Illegal character in Volume name \"%s\"\n"), - mr->VolumeName); - goto bail_out; - } - } + mr->VolumeName); + goto bail_out; + } + } + } else { + goto bail_out; } pr.NumVols++; + mr->Enabled = 1; if (db_create_media_record(jcr, jcr->db, mr) && - db_update_pool_record(jcr, jcr->db, &pr)) { - db_unlock(jcr->db); + db_update_pool_record(jcr, jcr->db, &pr)) { + db_unlock(jcr->db); Jmsg(jcr, M_INFO, 0, _("Created new Volume \"%s\" in catalog.\n"), mr->VolumeName); Dmsg1(90, "Created new Volume=%s\n", mr->VolumeName); - return true; + return true; } else { Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db)); } @@ -116,14 +114,14 @@ static bool create_simple_name(JCR *jcr, MEDIA_DBR *mr, POOL_DBR *pr) bstrncpy(tmr.VolumeName, name, sizeof(tmr.VolumeName)); bstrncat(tmr.VolumeName, num, sizeof(tmr.VolumeName)); if (db_get_media_record(jcr, jcr->db, &tmr)) { - Jmsg(jcr, M_WARNING, 0, + Jmsg(jcr, M_WARNING, 0, _("Wanted to create Volume \"%s\", but it already exists. Trying again.\n"), - tmr.VolumeName); - continue; + tmr.VolumeName); + continue; } bstrncpy(mr->VolumeName, name, sizeof(mr->VolumeName)); bstrncat(mr->VolumeName, num, sizeof(mr->VolumeName)); - break; /* Got good name */ + break; /* Got good name */ } if (mr->VolumeName[0] == 0) { Jmsg(jcr, M_ERROR, 0, _("Too many failures. Giving up creating Volume name.\n"));