~ubuntu-branches/ubuntu/maverick/pdns/maverick-updates

« back to all changes in this revision

Viewing changes to pdns/rcpgenerator.cc

  • Committer: Bazaar Package Importer
  • Author(s): Christoph Haas
  • Date: 2009-02-25 23:25:51 UTC
  • mfrom: (1.1.7 upstream) (12.1.3 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090225232551-ts3d9k9q0ti442i9
Tags: 2.9.22-1
New upstream version (closes: #513409).

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
{
29
29
}
30
30
 
 
31
void RecordTextReader::xfr48BitInt(uint64_t &val)
 
32
{
 
33
  xfr64BitInt(val);
 
34
}
 
35
 
 
36
void RecordTextReader::xfr64BitInt(uint64_t &val)
 
37
{
 
38
  skipSpaces();
 
39
 
 
40
  if(!isdigit(d_string.at(d_pos)))
 
41
    throw RecordTextException("expected digits at position "+lexical_cast<string>(d_pos)+" in '"+d_string+"'");
 
42
 
 
43
  char *endptr;
 
44
  unsigned long ret=strtoull(d_string.c_str() + d_pos, &endptr, 10);
 
45
  val=ret;
 
46
  
 
47
  d_pos = endptr - d_string.c_str();
 
48
}
 
49
 
 
50
 
31
51
void RecordTextReader::xfr32BitInt(uint32_t &val)
32
52
{
33
53
  skipSpaces();
88
108
    }
89
109
    else if(dns_isspace(d_string.at(d_pos))) 
90
110
      break;
91
 
    else
92
 
      throw RecordTextException("unable to parse IP address, strange character: "+d_string.at(d_pos));
93
 
 
 
111
    else {
 
112
      throw RecordTextException(string("unable to parse IP address, strange character: ")+d_string.at(d_pos));
 
113
    }
94
114
    d_pos++;
95
115
    if(d_pos == d_string.length())
96
116
      break;
134
154
 
135
155
  const char* strptr=d_string.c_str();
136
156
  while(d_pos < d_end) {
137
 
    if(dns_isspace(strptr[d_pos]))
 
157
    if(strptr[d_pos]!='\r' && dns_isspace(strptr[d_pos]))
138
158
      break;
139
159
 
140
160
    if(strptr[d_pos]=='\\' && d_pos < d_end - 1 && strptr[d_pos+1]!='.')  // leave the \. escape around
156
176
  }
157
177
}
158
178
 
159
 
void RecordTextReader::xfrBlob(string& val)
 
179
void RecordTextReader::xfrBlob(string& val, int)
160
180
{
161
181
  skipSpaces();
162
182
  int pos=(int)d_pos;
264
284
  d_string.clear();
265
285
}
266
286
 
 
287
void RecordTextWriter::xfr48BitInt(const uint64_t& val)
 
288
{
 
289
  if(!d_string.empty())
 
290
    d_string.append(1,' ');
 
291
  d_string+=lexical_cast<string>(val);
 
292
}
 
293
 
 
294
 
267
295
void RecordTextWriter::xfr32BitInt(const uint32_t& val)
268
296
{
269
297
  if(!d_string.empty())
271
299
  d_string+=lexical_cast<string>(val);
272
300
}
273
301
 
274
 
 
275
 
 
276
302
void RecordTextWriter::xfrType(const uint16_t& val)
277
303
{
278
304
  if(!d_string.empty())
370
396
  //  d_string.append(1,'.');
371
397
}
372
398
 
373
 
void RecordTextWriter::xfrBlob(const string& val)
 
399
void RecordTextWriter::xfrBlob(const string& val, int)
374
400
{
375
401
  if(!d_string.empty())
376
402
    d_string.append(1,' ');
434
460
  cout<<"Regenerated: '"<<out<<"'\n";
435
461
  
436
462
}
437
 
catch(exception& e)
 
463
catch(std::exception& e)
438
464
{
439
465
  cerr<<"Fatal: "<<e.what()<<endl;
440
466
}