// Returns a pointer to rightmost digit of volume number. char* GetVolNumPart(char *ArcName) { // Pointing to last name character. char *ChPtr=ArcName+strlen(ArcName)-1; // Skipping the archive extension. while (!IsDigit(*ChPtr) && ChPtr>ArcName) ChPtr--; // Skipping the numeric part of name. char *NumPtr=ChPtr; while (IsDigit(*NumPtr) && NumPtr>ArcName) NumPtr--; // Searching for first numeric part in names like name.part##of##.rar. // Stop search on the first dot. while (NumPtr>ArcName && *NumPtr!='.') { if (IsDigit(*NumPtr)) { // Validate the first numeric part only if it has a dot somwhere // before it. char *Dot=strchrd(PointToName(ArcName),'.'); if (Dot!=NULL && Dot<NumPtr) ChPtr=NumPtr; break; } NumPtr--; } return(ChPtr); }
char* GetVolNumPart(char *ArcName) { char *ChPtr=ArcName+strlen(ArcName)-1; while (!isdigit(*ChPtr) && ChPtr>ArcName) ChPtr--; char *NumPtr=ChPtr; while (isdigit(*NumPtr) && NumPtr>ArcName) NumPtr--; while (NumPtr>ArcName && *NumPtr!='.') { if (isdigit(*NumPtr)) { char *Dot=strchrd(PointToName(ArcName),'.'); if (Dot!=NULL && Dot<NumPtr) ChPtr=NumPtr; break; } NumPtr--; } return(ChPtr); }