@@ -86,9 +86,13 @@ main(int argc, char *argv[])
8686Oid set_oid = 0 ;
8787MultiXactId set_mxid = 0 ;
8888MultiXactOffset set_mxoff = (MultiXactOffset )- 1 ;
89- uint32 minXlogTli = 0 ;
89+ uint32 minXlogTli = 0 ,
90+ minXlogId = 0 ,
91+ minXlogSeg = 0 ;
9092XLogSegNo minXlogSegNo = 0 ;
9193char * endptr ;
94+ char * endptr2 ;
95+ char * endptr3 ;
9296char * DataDir ;
9397int fd ;
9498char path [MAXPGPATH ];
@@ -200,13 +204,28 @@ main(int argc, char *argv[])
200204break ;
201205
202206case 'l' :
203- if (strspn (optarg ,"01234567890ABCDEFabcdef" )!= 24 )
207+ minXlogTli = strtoul (optarg ,& endptr ,0 );
208+ if (endptr == optarg || * endptr != ',' )
204209{
205210fprintf (stderr ,_ ("%s: invalid argument for option -l\n" ),progname );
206211fprintf (stderr ,_ ("Try \"%s --help\" for more information.\n" ),progname );
207212exit (1 );
208213}
209- XLogFromFileName (optarg ,& minXlogTli ,& minXlogSegNo );
214+ minXlogId = strtoul (endptr + 1 ,& endptr2 ,0 );
215+ if (endptr2 == endptr + 1 || * endptr2 != ',' )
216+ {
217+ fprintf (stderr ,_ ("%s: invalid argument for option -l\n" ),progname );
218+ fprintf (stderr ,_ ("Try \"%s --help\" for more information.\n" ),progname );
219+ exit (1 );
220+ }
221+ minXlogSeg = strtoul (endptr2 + 1 ,& endptr3 ,0 );
222+ if (endptr3 == endptr2 + 1 || * endptr3 != '\0' )
223+ {
224+ fprintf (stderr ,_ ("%s: invalid argument for option -l\n" ),progname );
225+ fprintf (stderr ,_ ("Try \"%s --help\" for more information.\n" ),progname );
226+ exit (1 );
227+ }
228+ minXlogSegNo = (uint64 )minXlogId * XLogSegmentsPerXLogId + minXlogSeg ;
210229break ;
211230
212231default :