MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / get_file_size

Function get_file_size

src/burp/split/spit.cpp:465–535  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

463
464
465static int get_file_size(const SCHAR* prog_name, const SCHAR* string, SINT64* file_size)
466{
467/********************************************************************
468**
469** g e t _ f i l e _ s i z e
470**
471*********************************************************************
472**
473** Functional description:
474**
475** processing file size specification and returns calculated
476** file size.
477**
478*********************************************************************
479*/
480
481 UCHAR c;
482
483 for (const SCHAR* p = string; (c = *p++);)
484 {
485 if (c == '\0')
486 break;
487
488 if (isdigit(c))
489 *file_size = *file_size * 10 + (c - '0');
490 else
491 {
492 if ((isalpha(c)) && (UPPER(c) == 'G' || UPPER(c) == 'K' || UPPER(c) == 'M'))
493 {
494 SLONG size_indicator = 0;
495 switch (UPPER(c))
496 {
497 case 'K':
498 size_indicator = K_BYTES;
499 break;
500
501 case 'M':
502 size_indicator = M_BYTES;
503 break;
504
505 case 'G':
506 size_indicator = G_BYTES;
507 break;
508
509 default:
510 break;
511 } // end of switch( UPPER (c) )
512
513 *file_size = *file_size * size_indicator;
514 }
515 else
516 {
517 // invalid size indicator
518
519 fprintf(stderr, "%s: invalid size indicator '%s'\n", prog_name, string);
520 print_clo(prog_name);
521 return FB_FAILURE;
522 }

Callers 1

mainFunction · 0.85

Calls 1

print_cloFunction · 0.85

Tested by

no test coverage detected