comparison src/oct-stream.cc @ 2759:99dd10f4eaaf

[project @ 1997-02-27 08:59:55 by jwe]
author jwe
date Thu, 27 Feb 1997 09:02:09 +0000
parents 2ff2b536cc9d
children 9aeba8e006a4
comparison
equal deleted inserted replaced
2758:73a51c5250ec 2759:99dd10f4eaaf
997 { 997 {
998 int dummy; 998 int dummy;
999 999
1000 is.scan (fmt, &dummy); 1000 is.scan (fmt, &dummy);
1001 } 1001 }
1002 break; 1002 break;
1003 1003
1004 case 'd': case 'i': case 'o': case 'u': case 'x': 1004 case 'd': case 'i': case 'o': case 'u': case 'x':
1005 { 1005 {
1006 int tmp; 1006 int tmp;
1007 1007
1008 do_scanf_conv (is, fmt, &tmp, mval, data, count, 1008 do_scanf_conv (is, fmt, &tmp, mval, data, count,
1009 nr, max_size, discard); 1009 nr, max_size, discard);
1010 } 1010 }
1011 break; 1011 break;
1012 1012
1013 case 'e': case 'f': case 'g': 1013 case 'e': case 'f': case 'g':
1014 { 1014 {
1015 double tmp; 1015 double tmp;
1016 1016
1017 do_scanf_conv (is, fmt, &tmp, mval, data, count, 1017 do_scanf_conv (is, fmt, &tmp, mval, data, count,
1018 nr, max_size, discard); 1018 nr, max_size, discard);
1019 } 1019 }
1020 break; 1020 break;
1021 1021
1022 case 'c': 1022 case 'c':
1023 is.unsetf (ios::skipws); 1023 is.unsetf (ios::skipws);
1024 // Fall through... 1024 // Fall through...
1025 1025
1068 1068
1069 delete [] tmp; 1069 delete [] tmp;
1070 1070
1071 is.setf (flags); 1071 is.setf (flags);
1072 } 1072 }
1073 break; 1073 break;
1074 1074
1075 case 'p': case '[': 1075 case 'p': case '[':
1076 error ("fscanf: unsupported format specifier"); 1076 error ("fscanf: unsupported format specifier");
1077 break; 1077 break;
1078 1078
1085 { 1085 {
1086 break; 1086 break;
1087 } 1087 }
1088 else if (! is) 1088 else if (! is)
1089 { 1089 {
1090 if (is.eof ()) 1090 if (nr > 0)
1091 { 1091 {
1092 if (nr > 0) 1092 if (count > nr)
1093 { 1093 {
1094 if (count > nr) 1094 final_nr = nr;
1095 { 1095 final_nc = (count - 1) / nr + 1;
1096 final_nr = nr;
1097 final_nc = (count - 1) / nr + 1;
1098 }
1099 else
1100 {
1101 final_nr = count;
1102 final_nc = 1;
1103 }
1104 } 1096 }
1105 else 1097 else
1106 { 1098 {
1107 final_nr = count; 1099 final_nr = count;
1108 final_nc = 1; 1100 final_nc = 1;
1109 } 1101 }
1110 } 1102 }
1111 else 1103 else
1112 { 1104 {
1113 error ("fscanf: read error"); 1105 final_nr = count;
1114 1106 final_nc = 1;
1115 // XXX FIXME XXX -- is this the right thing to do? 1107 }
1116 // What about other streams? 1108
1117 if (name () == "stdin") 1109 // XXX FIXME XXX -- is this the right thing to do?
1118 { 1110 // What about other streams?
1119 is.clear (); 1111 if (name () == "stdin")
1120 1112 {
1121 // Skip to end of line. 1113 is.clear ();
1122 1114
1123 bool err; 1115 // Skip to end of line.
1124 do_gets (-1, err, false, "fscanf"); 1116
1125 } 1117 bool err;
1118 do_gets (-1, err, false, "fscanf");
1126 } 1119 }
1127 1120
1128 break; 1121 break;
1129 } 1122 }
1130 } 1123 }