diff --git a/src/opcodes.c b/src/opcodes.c
index 9bb62807c4aec21ab71ef2259b427d8b7a5d87d1..4b57afb656c8fac01151c32e57862f4ae430dc1f 100644
--- a/src/opcodes.c
+++ b/src/opcodes.c
@@ -23,7 +23,7 @@
 #include "module_support.h"
 #include "security.h"
 
-RCSID("$Id: opcodes.c,v 1.37 1999/04/15 04:08:15 hubbe Exp $");
+RCSID("$Id: opcodes.c,v 1.38 1999/06/19 09:55:58 mirar Exp $");
 
 void index_no_free(struct svalue *to,struct svalue *what,struct svalue *ind)
 {
@@ -755,21 +755,21 @@ static INT32 really_low_sscanf(char *input,
     {
       switch(match[cnt])
       {
-      case '*':
-	no_assign=1;
-	cnt++;
-	if(cnt>=match_len)
-	  error("Error in sscanf format string.\n");
-	continue;
-
-      case '0': case '1': case '2': case '3': case '4':
-      case '5': case '6': case '7': case '8': case '9':
-      {
-	char *t;
-	field_length=STRTOL(match+cnt,&t,10);
-	cnt=t-match;
-	continue;
-      }
+	case '*':
+	  no_assign=1;
+	  cnt++;
+	  if(cnt>=match_len)
+	    error("Error in sscanf format string.\n");
+	  continue;
+
+	case '0': case '1': case '2': case '3': case '4':
+	case '5': case '6': case '7': case '8': case '9':
+	{
+	  char *t;
+	  field_length=STRTOL(match+cnt,&t,10);
+	  cnt=t-match;
+	  continue;
+	}
 
 	case '{':
 	{
@@ -796,7 +796,7 @@ static INT32 really_low_sscanf(char *input,
 	  sval.u.array=allocate_array(0);
 	  SET_ONERROR(err, do_free_array, sval.u.array);
 
-	  while(1)
+	  while(input_len-eye)
 	  {
 	    int yes;
 	    struct svalue *save_sp=sp;
@@ -822,412 +822,412 @@ static INT32 really_low_sscanf(char *input,
 	  break;
 	}
 
-      case 'c':
-	if(field_length == -1) field_length = 1;
-	if(eye+field_length > input_len)
-	{
-	  chars_matched[0]=eye;
-	  return matches;
-	}
-	sval.type=T_INT;
-	sval.subtype=NUMBER_NUMBER;
-	sval.u.integer=0;
-	while(--field_length >= 0)
-	{
-	  sval.u.integer<<=8;
-	  sval.u.integer|=EXTRACT_UCHAR(input+eye);
-	  eye++;
-	}
-	break;
-
-      case 'd':
-      {
-	char * t;
+	case 'c':
+	  if(field_length == -1) field_length = 1;
+	  if(eye+field_length > input_len)
+	  {
+	    chars_matched[0]=eye;
+	    return matches;
+	  }
+	  sval.type=T_INT;
+	  sval.subtype=NUMBER_NUMBER;
+	  sval.u.integer=0;
+	  while(--field_length >= 0)
+	  {
+	    sval.u.integer<<=8;
+	    sval.u.integer|=EXTRACT_UCHAR(input+eye);
+	    eye++;
+	  }
+	  break;
 
-	if(eye>=input_len)
-	{
-	  chars_matched[0]=eye;
-	  return matches;
-	}
-	if(field_length != -1 && eye+field_length < input_len)
+	case 'd':
 	{
-	  char save=input[eye+field_length];
-	  input[eye+field_length]=0; /* DANGEROUS */
-	  sval.u.integer=STRTOL(input+eye,&t,10);
-	  input[eye+field_length]=save;
-	}else
-	  sval.u.integer=STRTOL(input+eye,&t,10);
-
-	if(input + eye == t)
-	{
-	  chars_matched[0]=eye;
-	  return matches;
-	}
-	eye=t-input;
-	sval.type=T_INT;
-	sval.subtype=NUMBER_NUMBER;
-	break;
-      }
-
-      case 'x':
-      {
-	char * t;
+	  char * t;
 
-	if(eye>=input_len)
-	{
-	  chars_matched[0]=eye;
-	  return matches;
-	}
-	if(field_length != -1 && eye+field_length < input_len)
-	{
-	  char save=input[eye+field_length];
-	  input[eye+field_length]=0; /* DANGEROUS */
-	  sval.u.integer=STRTOL(input+eye,&t,16);
-	  input[eye+field_length]=save;
-	}else
-	  sval.u.integer=STRTOL(input+eye,&t,16);
-	if(input + eye == t)
-	{
-	  chars_matched[0]=eye;
-	  return matches;
+	  if(eye>=input_len)
+	  {
+	    chars_matched[0]=eye;
+	    return matches;
+	  }
+	  if(field_length != -1 && eye+field_length < input_len)
+	  {
+	    char save=input[eye+field_length];
+	    input[eye+field_length]=0; /* DANGEROUS */
+	    sval.u.integer=STRTOL(input+eye,&t,10);
+	    input[eye+field_length]=save;
+	  }else
+	    sval.u.integer=STRTOL(input+eye,&t,10);
+
+	  if(input + eye == t)
+	  {
+	    chars_matched[0]=eye;
+	    return matches;
+	  }
+	  eye=t-input;
+	  sval.type=T_INT;
+	  sval.subtype=NUMBER_NUMBER;
+	  break;
 	}
-	eye=t-input;
-	sval.type=T_INT;
-	sval.subtype=NUMBER_NUMBER;
-	break;
-      }
 
-      case 'o':
-      {
-	char * t;
-
-	if(eye>=input_len)
-	{
-	  chars_matched[0]=eye;
-	  return matches;
-	}
-	if(field_length != -1 && eye+field_length < input_len)
-	{
-	  char save=input[eye+field_length];
-	  input[eye+field_length]=0; /* DANGEROUS */
-	  sval.u.integer=STRTOL(input+eye,&t,8);
-	  input[eye+field_length]=save;
-	}else
-	  sval.u.integer=STRTOL(input+eye,&t,8);
-	if(input + eye == t)
+	case 'x':
 	{
-	  chars_matched[0]=eye;
-	  return matches;
-	}
-	eye=t-input;
-	sval.type=T_INT;
-	sval.subtype=NUMBER_NUMBER;
-	break;
-      }
-
-      case 'D':
-      case 'i':
-      {
-	char * t;
+	  char * t;
 
-	if(eye>=input_len)
-	{
-	  chars_matched[0]=eye;
-	  return matches;
+	  if(eye>=input_len)
+	  {
+	    chars_matched[0]=eye;
+	    return matches;
+	  }
+	  if(field_length != -1 && eye+field_length < input_len)
+	  {
+	    char save=input[eye+field_length];
+	    input[eye+field_length]=0; /* DANGEROUS */
+	    sval.u.integer=STRTOL(input+eye,&t,16);
+	    input[eye+field_length]=save;
+	  }else
+	    sval.u.integer=STRTOL(input+eye,&t,16);
+	  if(input + eye == t)
+	  {
+	    chars_matched[0]=eye;
+	    return matches;
+	  }
+	  eye=t-input;
+	  sval.type=T_INT;
+	  sval.subtype=NUMBER_NUMBER;
+	  break;
 	}
-	if(field_length != -1 && eye+field_length < input_len)
-	{
-	  char save=input[eye+field_length];
-	  input[eye+field_length]=0; /* DANGEROUS */
-	  sval.u.integer=STRTOL(input+eye,&t,0);
-	  input[eye+field_length]=save;
-	}else
-	  sval.u.integer=STRTOL(input+eye,&t,0);
-	if(input + eye == t)
+
+	case 'o':
 	{
-	  chars_matched[0]=eye;
-	  return matches;
-	}
-	eye=t-input;
-	sval.type=T_INT;
-	sval.subtype=NUMBER_NUMBER;
-	break;
-      }
+	  char * t;
 
-      case 'f':
-      {
-	char * t;
+	  if(eye>=input_len)
+	  {
+	    chars_matched[0]=eye;
+	    return matches;
+	  }
+	  if(field_length != -1 && eye+field_length < input_len)
+	  {
+	    char save=input[eye+field_length];
+	    input[eye+field_length]=0; /* DANGEROUS */
+	    sval.u.integer=STRTOL(input+eye,&t,8);
+	    input[eye+field_length]=save;
+	  }else
+	    sval.u.integer=STRTOL(input+eye,&t,8);
+	  if(input + eye == t)
+	  {
+	    chars_matched[0]=eye;
+	    return matches;
+	  }
+	  eye=t-input;
+	  sval.type=T_INT;
+	  sval.subtype=NUMBER_NUMBER;
+	  break;
+	}
 
-	if(eye>=input_len)
+	case 'D':
+	case 'i':
 	{
-	  chars_matched[0]=eye;
-	  return matches;
+	  char * t;
+
+	  if(eye>=input_len)
+	  {
+	    chars_matched[0]=eye;
+	    return matches;
+	  }
+	  if(field_length != -1 && eye+field_length < input_len)
+	  {
+	    char save=input[eye+field_length];
+	    input[eye+field_length]=0; /* DANGEROUS */
+	    sval.u.integer=STRTOL(input+eye,&t,0);
+	    input[eye+field_length]=save;
+	  }else
+	    sval.u.integer=STRTOL(input+eye,&t,0);
+	  if(input + eye == t)
+	  {
+	    chars_matched[0]=eye;
+	    return matches;
+	  }
+	  eye=t-input;
+	  sval.type=T_INT;
+	  sval.subtype=NUMBER_NUMBER;
+	  break;
 	}
-	sval.u.float_number=STRTOD(input+eye,&t);
-	if(input + eye == t)
+
+	case 'f':
 	{
-	  chars_matched[0]=eye;
-	  return matches;
-	}
-	eye=t-input;
-	sval.type=T_FLOAT;
+	  char * t;
+
+	  if(eye>=input_len)
+	  {
+	    chars_matched[0]=eye;
+	    return matches;
+	  }
+	  sval.u.float_number=STRTOD(input+eye,&t);
+	  if(input + eye == t)
+	  {
+	    chars_matched[0]=eye;
+	    return matches;
+	  }
+	  eye=t-input;
+	  sval.type=T_FLOAT;
 #ifdef __CHECKER__
-	sval.subtype=0;
+	  sval.subtype=0;
 #endif
-	break;
-      }
-
-      case 'F':
-	if(field_length == -1) field_length = 4;
-	if(field_length != 4 && field_length != 8)
-	  error("Invalid IEEE width %d in sscanf format string.\n",
-		field_length);
-	if(eye+field_length > input_len)
-	{
-	  chars_matched[0]=eye;
-	  return matches;
+	  break;
 	}
-	sval.type=T_FLOAT;
+
+	case 'F':
+	  if(field_length == -1) field_length = 4;
+	  if(field_length != 4 && field_length != 8)
+	    error("Invalid IEEE width %d in sscanf format string.\n",
+		  field_length);
+	  if(eye+field_length > input_len)
+	  {
+	    chars_matched[0]=eye;
+	    return matches;
+	  }
+	  sval.type=T_FLOAT;
 #ifdef __CHECKER__
-	sval.subtype=0;
+	  sval.subtype=0;
 #endif
-	switch(field_length) {
-	case 4:
+	  switch(field_length) {
+	    case 4:
 #ifdef FLOAT_IS_IEEE_BIG
-	  {
-	    float f;
-	    ((char *)&f)[0] = *(input+eye);
-	    ((char *)&f)[1] = *(input+eye+1);
-	    ((char *)&f)[2] = *(input+eye+2);
-	    ((char *)&f)[3] = *(input+eye+3);
-	    sval.u.float_number = f;
-	  }
+	    {
+	      float f;
+	      ((char *)&f)[0] = *(input+eye);
+	      ((char *)&f)[1] = *(input+eye+1);
+	      ((char *)&f)[2] = *(input+eye+2);
+	      ((char *)&f)[3] = *(input+eye+3);
+	      sval.u.float_number = f;
+	    }
 #else
 #ifdef FLOAT_IS_IEEE_LITTLE
-	  {
-	    float f;
-	    ((char *)&f)[3] = *(input+eye);
-	    ((char *)&f)[2] = *(input+eye+1);
-	    ((char *)&f)[1] = *(input+eye+2);
-	    ((char *)&f)[0] = *(input+eye+3);
-	    sval.u.float_number = f;
-	  }
+	    {
+	      float f;
+	      ((char *)&f)[3] = *(input+eye);
+	      ((char *)&f)[2] = *(input+eye+1);
+	      ((char *)&f)[1] = *(input+eye+2);
+	      ((char *)&f)[0] = *(input+eye+3);
+	      sval.u.float_number = f;
+	    }
 #else
-	  sval.u.float_number = low_parse_IEEE_float(input+eye, 4);
+	    sval.u.float_number = low_parse_IEEE_float(input+eye, 4);
 #endif
 #endif
-	  eye += 4;
-	  break;
-	case 8:
+	    eye += 4;
+	    break;
+	    case 8:
 #ifdef DOUBLE_IS_IEEE_BIG
-	  {
-	    double d;
-	    ((char *)&d)[0] = *(input+eye);
-	    ((char *)&d)[1] = *(input+eye+1);
-	    ((char *)&d)[2] = *(input+eye+2);
-	    ((char *)&d)[3] = *(input+eye+3);
-	    ((char *)&d)[4] = *(input+eye+4);
-	    ((char *)&d)[5] = *(input+eye+5);
-	    ((char *)&d)[6] = *(input+eye+6);
-	    ((char *)&d)[7] = *(input+eye+7);
-	    sval.u.float_number = (float)d;
-	  }
+	    {
+	      double d;
+	      ((char *)&d)[0] = *(input+eye);
+	      ((char *)&d)[1] = *(input+eye+1);
+	      ((char *)&d)[2] = *(input+eye+2);
+	      ((char *)&d)[3] = *(input+eye+3);
+	      ((char *)&d)[4] = *(input+eye+4);
+	      ((char *)&d)[5] = *(input+eye+5);
+	      ((char *)&d)[6] = *(input+eye+6);
+	      ((char *)&d)[7] = *(input+eye+7);
+	      sval.u.float_number = (float)d;
+	    }
 #else
 #ifdef DOUBLE_IS_IEEE_LITTLE
-	  {
-	    double d;
-	    ((char *)&d)[7] = *(input+eye);
-	    ((char *)&d)[6] = *(input+eye+1);
-	    ((char *)&d)[5] = *(input+eye+2);
-	    ((char *)&d)[4] = *(input+eye+3);
-	    ((char *)&d)[3] = *(input+eye+4);
-	    ((char *)&d)[2] = *(input+eye+5);
-	    ((char *)&d)[1] = *(input+eye+6);
-	    ((char *)&d)[0] = *(input+eye+7);
-	    sval.u.float_number = (float)d;
-	  }
+	    {
+	      double d;
+	      ((char *)&d)[7] = *(input+eye);
+	      ((char *)&d)[6] = *(input+eye+1);
+	      ((char *)&d)[5] = *(input+eye+2);
+	      ((char *)&d)[4] = *(input+eye+3);
+	      ((char *)&d)[3] = *(input+eye+4);
+	      ((char *)&d)[2] = *(input+eye+5);
+	      ((char *)&d)[1] = *(input+eye+6);
+	      ((char *)&d)[0] = *(input+eye+7);
+	      sval.u.float_number = (float)d;
+	    }
 #else
-	  sval.u.float_number = low_parse_IEEE_float(input+eye, 8);
+	    sval.u.float_number = low_parse_IEEE_float(input+eye, 8);
 #endif
 #endif
-	  eye += 8;
+	    eye += 8;
+	    break;
+	  }
 	  break;
-	}
-	break;
 
-      case 's':
-	if(field_length != -1)
-	{
-	  if(input_len - eye < field_length)
+	case 's':
+	  if(field_length != -1)
 	  {
-	    chars_matched[0]=eye;
-	    return matches;
-	  }
+	    if(input_len - eye < field_length)
+	    {
+	      chars_matched[0]=eye;
+	      return matches;
+	    }
 
-	  sval.type=T_STRING;
+	    sval.type=T_STRING;
 #ifdef __CHECKER__
-	  sval.subtype=0;
+	    sval.subtype=0;
 #endif
-	  sval.u.string=make_shared_binary_string(input+eye,field_length);
-	  eye+=field_length;
-	  break;
-	}
+	    sval.u.string=make_shared_binary_string(input+eye,field_length);
+	    eye+=field_length;
+	    break;
+	  }
 
-	if(cnt+1>=match_len)
-	{
-	  sval.type=T_STRING;
+	  if(cnt+1>=match_len)
+	  {
+	    sval.type=T_STRING;
 #ifdef __CHECKER__
-	  sval.subtype=0;
+	    sval.subtype=0;
 #endif
-	  sval.u.string=make_shared_binary_string(input+eye,input_len-eye);
-	  eye=input_len;
-	  break;
-	}else{
-	  char *end_str_start;
-	  char *end_str_end;
-	  char *s=0;		/* make gcc happy */
-	  char *p=0;		/* make gcc happy */
-	  int start,contains_percent_percent, new_eye;
-
-	  start=eye;
-	  end_str_start=match+cnt+1;
+	    sval.u.string=make_shared_binary_string(input+eye,input_len-eye);
+	    eye=input_len;
+	    break;
+	  }else{
+	    char *end_str_start;
+	    char *end_str_end;
+	    char *s=0;		/* make gcc happy */
+	    char *p=0;		/* make gcc happy */
+	    int start,contains_percent_percent, new_eye;
+
+	    start=eye;
+	    end_str_start=match+cnt+1;
           
-	  s=match+cnt+1;
-	test_again:
-	  if(*s=='%')
-	  {
-	    s++;
-	    if(*s=='*') s++;
-	    switch(*s)
+	    s=match+cnt+1;
+      test_again:
+	    if(*s=='%')
 	    {
-	    case 'n':
 	      s++;
-	      goto test_again;
+	      if(*s=='*') s++;
+	      switch(*s)
+	      {
+		case 'n':
+		  s++;
+		  goto test_again;
 	      
-	    case 's':
-	      error("Illegal to have two adjecent %%s.\n");
-	      return 0;		/* make gcc happy */
+		case 's':
+		  error("Illegal to have two adjecent %%s.\n");
+		  return 0;		/* make gcc happy */
 	      
-	      /* sscanf("foo-bar","%s%d",a,b) might not work as expected */
-	    case 'd':
-	      for(e=0;e<256;e++) set[e]=1;
-	      for(e='0';e<='9';e++) set[e]=0;
-	      set['-']=0;
-	      goto match_set;
-
-	    case 'o':
-	      for(e=0;e<256;e++) set[e]=1;
-	      for(e='0';e<='7';e++) set[e]=0;
-	      goto match_set;
-
-	    case 'x':
-	      for(e=0;e<256;e++) set[e]=1;
-	      for(e='0';e<='9';e++) set[e]=0;
-	      for(e='a';e<='f';e++) set[e]=0;
-	      goto match_set;
-
-	    case 'D':
-	      for(e=0;e<256;e++) set[e]=1;
-	      for(e='0';e<='9';e++) set[e]=0;
-	      set['-']=0;
-	      set['x']=0;
-	      goto match_set;
-
-	    case 'f':
-	      for(e=0;e<256;e++) set[e]=1;
-	      for(e='0';e<='9';e++) set[e]=0;
-	      set['.']=set['-']=0;
-	      goto match_set;
-
-	    case '[':		/* oh dear */
-	      read_set((unsigned char *)match,s-match+1,set,match_len);
-	      for(e=0;e<256;e++) set[e]=!set[e];
-	      goto match_set;
+		  /* sscanf("foo-bar","%s%d",a,b) might not work as expected */
+		case 'd':
+		  for(e=0;e<256;e++) set[e]=1;
+		  for(e='0';e<='9';e++) set[e]=0;
+		  set['-']=0;
+		  goto match_set;
+
+		case 'o':
+		  for(e=0;e<256;e++) set[e]=1;
+		  for(e='0';e<='7';e++) set[e]=0;
+		  goto match_set;
+
+		case 'x':
+		  for(e=0;e<256;e++) set[e]=1;
+		  for(e='0';e<='9';e++) set[e]=0;
+		  for(e='a';e<='f';e++) set[e]=0;
+		  goto match_set;
+
+		case 'D':
+		  for(e=0;e<256;e++) set[e]=1;
+		  for(e='0';e<='9';e++) set[e]=0;
+		  set['-']=0;
+		  set['x']=0;
+		  goto match_set;
+
+		case 'f':
+		  for(e=0;e<256;e++) set[e]=1;
+		  for(e='0';e<='9';e++) set[e]=0;
+		  set['.']=set['-']=0;
+		  goto match_set;
+
+		case '[':		/* oh dear */
+		  read_set((unsigned char *)match,s-match+1,set,match_len);
+		  for(e=0;e<256;e++) set[e]=!set[e];
+		  goto match_set;
+	      }
 	    }
-	  }
 
-	  contains_percent_percent=0;
+	    contains_percent_percent=0;
 
-	  for(e=cnt;e<match_len;e++)
-	  {
-	    if(match[e]=='%')
+	    for(e=cnt;e<match_len;e++)
 	    {
-	      if(match[e+1]=='%')
+	      if(match[e]=='%')
 	      {
-		contains_percent_percent=1;
-		e++;
-	      }else{
-		break;
+		if(match[e+1]=='%')
+		{
+		  contains_percent_percent=1;
+		  e++;
+		}else{
+		  break;
+		}
 	      }
 	    }
-	  }
 	   
-	  end_str_end=match+e;
+	    end_str_end=match+e;
 
-	  if(!contains_percent_percent)
-	  {
-	    s=my_memmem(end_str_start,
-			end_str_end-end_str_start,
-			input+eye,
-			input_len-eye);
-	    if(!s)
-	    {
-	      chars_matched[0]=eye;
-	      return matches;
-	    }
-	    eye=s-input;
-	    new_eye=eye+end_str_end-end_str_start;
-	  }else{
-	    for(;eye<input_len;eye++)
+	    if(!contains_percent_percent)
 	    {
-	      p=input+eye;
-	      for(s=end_str_start;s<end_str_end;s++,p++)
+	      s=my_memmem(end_str_start,
+			  end_str_end-end_str_start,
+			  input+eye,
+			  input_len-eye);
+	      if(!s)
 	      {
-		if(*s!=*p) break;
-		if(*s=='%') s++;
+		chars_matched[0]=eye;
+		return matches;
 	      }
-	      if(s==end_str_end)
-		break;
-	    }
-	    if(eye==input_len)
-	    {
-	      chars_matched[0]=eye;
-	      return matches;
+	      eye=s-input;
+	      new_eye=eye+end_str_end-end_str_start;
+	    }else{
+	      for(;eye<input_len;eye++)
+	      {
+		p=input+eye;
+		for(s=end_str_start;s<end_str_end;s++,p++)
+		{
+		  if(*s!=*p) break;
+		  if(*s=='%') s++;
+		}
+		if(s==end_str_end)
+		  break;
+	      }
+	      if(eye==input_len)
+	      {
+		chars_matched[0]=eye;
+		return matches;
+	      }
+	      new_eye=p-input;
 	    }
-	    new_eye=p-input;
-	  }
 
-	  sval.type=T_STRING;
+	    sval.type=T_STRING;
 #ifdef __CHECKER__
-	  sval.subtype=0;
+	    sval.subtype=0;
 #endif
-	  sval.u.string=make_shared_binary_string(input+start,eye-start);
+	    sval.u.string=make_shared_binary_string(input+start,eye-start);
 
-	  cnt=end_str_end-match-1;
-	  eye=new_eye;
-	  break;
-	}
+	    cnt=end_str_end-match-1;
+	    eye=new_eye;
+	    break;
+	  }
 
-      case '[':
-	cnt=read_set((unsigned char *)match,cnt+1,set,match_len);
+	case '[':
+	  cnt=read_set((unsigned char *)match,cnt+1,set,match_len);
 
-      match_set:
-	for(e=eye;eye<input_len && set[EXTRACT_UCHAR(input+eye)];eye++);
-	sval.type=T_STRING;
+  match_set:
+	  for(e=eye;eye<input_len && set[EXTRACT_UCHAR(input+eye)];eye++);
+	  sval.type=T_STRING;
 #ifdef __CHECKER__
-	sval.subtype=0;
+	  sval.subtype=0;
 #endif
-	sval.u.string=make_shared_binary_string(input+e,eye-e);
-	break;
+	  sval.u.string=make_shared_binary_string(input+e,eye-e);
+	  break;
 
-      case 'n':
-	sval.type=T_INT;
-	sval.subtype=NUMBER_NUMBER;
-	sval.u.integer=eye;
-	break;
+	case 'n':
+	  sval.type=T_INT;
+	  sval.subtype=NUMBER_NUMBER;
+	  sval.u.integer=eye;
+	  break;
     
-      default:
-	error("Unknown sscanf token %%%c\n",match[cnt]);
+	default:
+	  error("Unknown sscanf token %%%c\n",match[cnt]);
       }
       break;
     }