Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-2-2
Commits
44432d8f
Commit
44432d8f
authored
Feb 04, 2012
by
Antoine Cellerier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add strverscmp from glibc 2.14.1 to compat.
parent
09e79a67
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
110 additions
and
1 deletion
+110
-1
compat/strverscmp.c
compat/strverscmp.c
+105
-0
configure.ac
configure.ac
+1
-1
include/vlc_fixups.h
include/vlc_fixups.h
+4
-0
No files found.
compat/strverscmp.c
0 → 100644
View file @
44432d8f
/* Compare strings while treating digits characters numerically.
Copyright (C) 1997, 2002, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jean-Franois Bignolles <bignolle@ecoledoc.ibp.fr>, 1997.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <stdint.h>
#include <string.h>
#include <ctype.h>
/* states: S_N: normal, S_I: comparing integral part, S_F: comparing
fractionnal parts, S_Z: idem but with leading Zeroes only */
#define S_N 0x0
#define S_I 0x3
#define S_F 0x6
#define S_Z 0x9
/* result_type: CMP: return diff; LEN: compare using len_diff/diff */
#define CMP 2
#define LEN 3
/* Compare S1 and S2 as strings holding indices/version numbers,
returning less than, equal to or greater than zero if S1 is less than,
equal to or greater than S2 (for more info, see the texinfo doc).
*/
int
strverscmp
(
const
char
*
s1
,
const
char
*
s2
)
{
const
unsigned
char
*
p1
=
(
const
unsigned
char
*
)
s1
;
const
unsigned
char
*
p2
=
(
const
unsigned
char
*
)
s2
;
/* Symbol(s) 0 [1-9] others
Transition (10) 0 (01) d (00) x */
static
const
uint8_t
next_state
[]
=
{
/* state x d 0 */
/* S_N */
S_N
,
S_I
,
S_Z
,
/* S_I */
S_N
,
S_I
,
S_I
,
/* S_F */
S_N
,
S_F
,
S_F
,
/* S_Z */
S_N
,
S_F
,
S_Z
};
static
const
int8_t
result_type
[]
=
{
/* state x/x x/d x/0 d/x d/d d/0 0/x 0/d 0/0 */
/* S_N */
CMP
,
CMP
,
CMP
,
CMP
,
LEN
,
CMP
,
CMP
,
CMP
,
CMP
,
/* S_I */
CMP
,
-
1
,
-
1
,
+
1
,
LEN
,
LEN
,
+
1
,
LEN
,
LEN
,
/* S_F */
CMP
,
CMP
,
CMP
,
CMP
,
CMP
,
CMP
,
CMP
,
CMP
,
CMP
,
/* S_Z */
CMP
,
+
1
,
+
1
,
-
1
,
CMP
,
CMP
,
-
1
,
CMP
,
CMP
};
if
(
p1
==
p2
)
return
0
;
unsigned
char
c1
=
*
p1
++
;
unsigned
char
c2
=
*
p2
++
;
/* Hint: '0' is a digit too. */
int
state
=
S_N
+
((
c1
==
'0'
)
+
(
isdigit
(
c1
)
!=
0
));
int
diff
;
while
((
diff
=
c1
-
c2
)
==
0
)
{
if
(
c1
==
'\0'
)
return
diff
;
state
=
next_state
[
state
];
c1
=
*
p1
++
;
c2
=
*
p2
++
;
state
+=
(
c1
==
'0'
)
+
(
isdigit
(
c1
)
!=
0
);
}
state
=
result_type
[
state
*
3
+
(((
c2
==
'0'
)
+
(
isdigit
(
c2
)
!=
0
)))];
switch
(
state
)
{
case
CMP
:
return
diff
;
case
LEN
:
while
(
isdigit
(
*
p1
++
))
if
(
!
isdigit
(
*
p2
++
))
return
1
;
return
isdigit
(
*
p2
)
?
-
1
:
diff
;
default:
return
state
;
}
}
configure.ac
View file @
44432d8f
...
...
@@ -491,7 +491,7 @@ need_libc=false
dnl Check for usual libc functions
AC_CHECK_DECLS([nanosleep],,,[#include <time.h>])
AC_CHECK_FUNCS([daemon fcntl fstatvfs fork getenv getpwuid_r if_nameindex if_nametoindex isatty lstat memalign mmap openat pread posix_fadvise posix_madvise setlocale stricmp strnicmp strptime uselocale])
AC_REPLACE_FUNCS([atof atoll dirfd fdopendir flockfile fsync getdelim getpid gmtime_r inet_pton lldiv localtime_r nrand48 poll rewind setenv strcasecmp strcasestr strdup strlcpy strncasecmp strndup strnlen strsep strtof strtok_r strtoll swab tdestroy])
AC_REPLACE_FUNCS([atof atoll dirfd fdopendir flockfile fsync getdelim getpid gmtime_r inet_pton lldiv localtime_r nrand48 poll rewind setenv strcasecmp strcasestr strdup strlcpy strncasecmp strndup strnlen strsep strtof strtok_r strtoll swab tdestroy
strverscmp
])
AC_CHECK_FUNCS(fdatasync,,
[AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
])
...
...
include/vlc_fixups.h
View file @
44432d8f
...
...
@@ -118,6 +118,10 @@ char *strdup (const char *);
int
strncasecmp
(
const
char
*
,
const
char
*
,
size_t
);
#endif
#ifndef HAVE_STRVERSCMP
int
strverscmp
(
const
char
*
,
const
char
*
);
#endif
#ifndef HAVE_STRNLEN
size_t
strnlen
(
const
char
*
,
size_t
);
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment