* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: server.c,v 1.638.4.2 2012/02/06 21:33:07 each Exp $ */
+/* $Id: server.c,v 1.638.4.3 2012/02/07 00:58:40 each Exp $ */
/*! \file */
* set '*zonep' to NULL.
*/
static isc_result_t
-zone_from_args(ns_server_t *server, char *args, dns_zone_t **zonep,
- const char **zonename, isc_boolean_t skip)
+zone_from_args(ns_server_t *server, char *args, const char *zonetxt,
+ dns_zone_t **zonep, const char **zonename, isc_boolean_t skip)
{
char *input, *ptr;
- const char *zonetxt;
char *classtxt;
const char *viewtxt = NULL;
dns_fixedname_t name;
}
/* Look for the zone name. */
- zonetxt = next_token(&input, " \t");
+ if (zonetxt == NULL)
+ zonetxt = next_token(&input, " \t");
if (zonetxt == NULL)
return (ISC_R_SUCCESS);
if (zonename)
dns_zone_t *zone = NULL;
dns_zonetype_t type;
- result = zone_from_args(server, args, &zone, NULL, ISC_TRUE);
+ result = zone_from_args(server, args, NULL, &zone, NULL, ISC_TRUE);
if (result != ISC_R_SUCCESS)
return (result);
if (zone == NULL)
dns_zonetype_t type;
const char *msg = NULL;
- result = zone_from_args(server, args, &zone, NULL, ISC_TRUE);
+ result = zone_from_args(server, args, NULL, &zone, NULL, ISC_TRUE);
if (result != ISC_R_SUCCESS)
return (result);
if (zone == NULL) {
dns_zone_t *zone = NULL;
const unsigned char msg[] = "zone notify queued";
- result = zone_from_args(server, args, &zone, NULL, ISC_TRUE);
+ result = zone_from_args(server, args, NULL, &zone, NULL, ISC_TRUE);
if (result != ISC_R_SUCCESS)
return (result);
if (zone == NULL)
const unsigned char msg2[] = "not a slave or stub zone";
dns_zonetype_t type;
- result = zone_from_args(server, args, &zone, NULL, ISC_TRUE);
+ result = zone_from_args(server, args, NULL, &zone, NULL, ISC_TRUE);
if (result != ISC_R_SUCCESS)
return (result);
if (zone == NULL)
if (strncasecmp(args, NS_COMMAND_SIGN, strlen(NS_COMMAND_SIGN)) == 0)
fullsign = ISC_TRUE;
- result = zone_from_args(server, args, &zone, NULL, ISC_TRUE);
+ result = zone_from_args(server, args, NULL, &zone, NULL, ISC_TRUE);
if (result != ISC_R_SUCCESS)
return (result);
if (zone == NULL)
dns_zone_t *zone = NULL;
char classstr[DNS_RDATACLASS_FORMATSIZE];
char zonename[DNS_NAME_FORMATSIZE];
- const char *vname, *sep, *msg = NULL;
+ const char *vname, *sep, *msg = NULL, *arg;
isc_boolean_t cleanup = ISC_FALSE;
- char arg[8];
- int n;
- /* Did the user specify -clean? */
- n = sscanf(args, "%*s %7s", arg);
- if (n > 0 && strcmp(arg, "-clean") == 0) {
- cleanup = ISC_TRUE;
+ (void) next_token(&args, " \t");
- /* shift so that zone_from_args() won't be confused */
- (void) next_token(&args, " \t");
+ arg = next_token(&args, " \t");
+ if (arg != NULL &&
+ (strcmp(arg, "-clean") == 0 || strcmp(arg, "-clear") == 0)) {
+ cleanup = ISC_TRUE;
+ arg = next_token(&args, " \t");
}
- result = zone_from_args(server, args, &zone, NULL, ISC_TRUE);
+ result = zone_from_args(server, args, arg, &zone, NULL, ISC_FALSE);
if (result != ISC_R_SUCCESS)
return (result);
isc_boolean_t frozen;
const char *msg = NULL;
- result = zone_from_args(server, args, &zone, NULL, ISC_TRUE);
+ result = zone_from_args(server, args, NULL, &zone, NULL, ISC_TRUE);
if (result != ISC_R_SUCCESS)
return (result);
if (zone == NULL) {
FILE *ifp = NULL, *ofp = NULL;
/* Parse parameters */
- CHECK(zone_from_args(server, args, &zone, &zonename, ISC_TRUE));
+ CHECK(zone_from_args(server, args, NULL, &zone, &zonename, ISC_TRUE));
if (result != ISC_R_SUCCESS)
return (result);
if (zone == NULL) {
if (strcasecmp(ptr, "-list") == 0)
list = ISC_TRUE;
- else if (strcasecmp(ptr, "-clear") == 0) {
+ else if ((strcasecmp(ptr, "-clear") == 0) ||
+ (strcasecmp(ptr, "-clean") == 0)) {
clear = ISC_TRUE;
ptr = next_token(&args, " \t");
if (ptr == NULL)
} else
CHECK(DNS_R_SYNTAX);
- CHECK(zone_from_args(server, args, &zone, NULL, ISC_FALSE));
+ CHECK(zone_from_args(server, args, NULL, &zone, NULL, ISC_FALSE));
if (zone == NULL)
CHECK(ISC_R_UNEXPECTEDEND);