Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
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
Abuhujair Javed
Postgres FD Implementation
Commits
5f77b1ac
Commit
5f77b1ac
authored
Nov 28, 2008
by
Tom Lane
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cosmetic cleanups in contrib/isn (doesn't fix the passbyval problem)
parent
5d2a1a41
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
26 additions
and
43 deletions
+26
-43
contrib/isn/isn.c
contrib/isn/isn.c
+23
-40
contrib/isn/isn.h
contrib/isn/isn.h
+3
-3
No files found.
contrib/isn/isn.c
View file @
5f77b1ac
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
*
*
* IDENTIFICATION
* IDENTIFICATION
* $PostgreSQL: pgsql/contrib/isn/isn.c,v 1.
8 2008/01/01 19:45:45 momjian
Exp $
* $PostgreSQL: pgsql/contrib/isn/isn.c,v 1.
9 2008/11/28 18:04:00 tgl
Exp $
*
*
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*/
*/
...
@@ -17,16 +17,15 @@
...
@@ -17,16 +17,15 @@
#include "fmgr.h"
#include "fmgr.h"
#include "utils/builtins.h"
#include "utils/builtins.h"
PG_MODULE_MAGIC
;
#include "isn.h"
#include "isn.h"
#include "EAN13.h"
#include "EAN13.h"
#include "ISBN.h"
#include "ISBN.h"
#include "ISMN.h"
#include "ISMN.h"
#include "ISSN.h"
#include "ISSN.h"
#include "UPC.h"
#include "UPC.h"
PG_MODULE_MAGIC
;
#define MAXEAN13LEN 18
#define MAXEAN13LEN 18
enum
isn_type
enum
isn_type
...
@@ -34,7 +33,7 @@ enum isn_type
...
@@ -34,7 +33,7 @@ enum isn_type
INVALID
,
ANY
,
EAN13
,
ISBN
,
ISMN
,
ISSN
,
UPC
INVALID
,
ANY
,
EAN13
,
ISBN
,
ISMN
,
ISSN
,
UPC
};
};
static
const
char
*
isn_names
[]
=
{
"EAN13/UPC/ISxN"
,
"EAN13/UPC/ISxN"
,
"EAN13"
,
"ISBN"
,
"ISMN"
,
"ISSN"
,
"UPC"
};
static
const
char
*
const
isn_names
[]
=
{
"EAN13/UPC/ISxN"
,
"EAN13/UPC/ISxN"
,
"EAN13"
,
"ISBN"
,
"ISMN"
,
"ISSN"
,
"UPC"
};
static
bool
g_weak
=
false
;
static
bool
g_weak
=
false
;
static
bool
g_initialized
=
false
;
static
bool
g_initialized
=
false
;
...
@@ -58,8 +57,7 @@ static bool g_initialized = false;
...
@@ -58,8 +57,7 @@ static bool g_initialized = false;
* Check if the table and its index is correct (just for debugging)
* Check if the table and its index is correct (just for debugging)
*/
*/
#ifdef ISN_DEBUG
#ifdef ISN_DEBUG
static
static
bool
bool
check_table
(
const
char
*
(
*
TABLE
)[
2
],
const
unsigned
TABLE_index
[
10
][
2
])
check_table
(
const
char
*
(
*
TABLE
)[
2
],
const
unsigned
TABLE_index
[
10
][
2
])
{
{
const
char
*
aux1
,
const
char
*
aux1
,
...
@@ -139,8 +137,7 @@ invalidindex:
...
@@ -139,8 +137,7 @@ invalidindex:
* Formatting and conversion routines.
* Formatting and conversion routines.
*---------------------------------------------------------*/
*---------------------------------------------------------*/
static
static
unsigned
unsigned
dehyphenate
(
char
*
bufO
,
char
*
bufI
)
dehyphenate
(
char
*
bufO
,
char
*
bufI
)
{
{
unsigned
ret
=
0
;
unsigned
ret
=
0
;
...
@@ -165,8 +162,7 @@ dehyphenate(char *bufO, char *bufI)
...
@@ -165,8 +162,7 @@ dehyphenate(char *bufO, char *bufI)
*
*
* Returns the number of characters acctually hyphenated.
* Returns the number of characters acctually hyphenated.
*/
*/
static
static
unsigned
unsigned
hyphenate
(
char
*
bufO
,
char
*
bufI
,
const
char
*
(
*
TABLE
)[
2
],
const
unsigned
TABLE_index
[
10
][
2
])
hyphenate
(
char
*
bufO
,
char
*
bufI
,
const
char
*
(
*
TABLE
)[
2
],
const
unsigned
TABLE_index
[
10
][
2
])
{
{
unsigned
ret
=
0
;
unsigned
ret
=
0
;
...
@@ -276,8 +272,7 @@ hyphenate(char *bufO, char *bufI, const char *(*TABLE)[2], const unsigned TABLE_
...
@@ -276,8 +272,7 @@ hyphenate(char *bufO, char *bufI, const char *(*TABLE)[2], const unsigned TABLE_
*
*
* Returns the weight of the number (the check digit value, 0-10)
* Returns the weight of the number (the check digit value, 0-10)
*/
*/
static
static
unsigned
unsigned
weight_checkdig
(
char
*
isn
,
unsigned
size
)
weight_checkdig
(
char
*
isn
,
unsigned
size
)
{
{
unsigned
weight
=
0
;
unsigned
weight
=
0
;
...
@@ -303,8 +298,7 @@ weight_checkdig(char *isn, unsigned size)
...
@@ -303,8 +298,7 @@ weight_checkdig(char *isn, unsigned size)
*
*
* Returns the check digit value (0-9)
* Returns the check digit value (0-9)
*/
*/
static
static
unsigned
unsigned
checkdig
(
char
*
num
,
unsigned
size
)
checkdig
(
char
*
num
,
unsigned
size
)
{
{
unsigned
check
=
0
,
unsigned
check
=
0
,
...
@@ -341,8 +335,7 @@ checkdig(char *num, unsigned size)
...
@@ -341,8 +335,7 @@ checkdig(char *num, unsigned size)
* If errorOK is false, ereport a useful error message if the ean13 is bad.
* If errorOK is false, ereport a useful error message if the ean13 is bad.
* If errorOK is true, just return "false" for bad input.
* If errorOK is true, just return "false" for bad input.
*/
*/
static
static
bool
bool
ean2isn
(
ean13
ean
,
bool
errorOK
,
ean13
*
result
,
enum
isn_type
accept
)
ean2isn
(
ean13
ean
,
bool
errorOK
,
ean13
*
result
,
enum
isn_type
accept
)
{
{
enum
isn_type
type
=
INVALID
;
enum
isn_type
type
=
INVALID
;
...
@@ -445,8 +438,7 @@ eantoobig:
...
@@ -445,8 +438,7 @@ eantoobig:
* ean2UPC/ISxN --- Convert in-place a normalized EAN13 string to the corresponding
* ean2UPC/ISxN --- Convert in-place a normalized EAN13 string to the corresponding
* UPC/ISxN string number. Assumes the input string is normalized.
* UPC/ISxN string number. Assumes the input string is normalized.
*/
*/
static
inline
static
inline
void
void
ean2ISBN
(
char
*
isn
)
ean2ISBN
(
char
*
isn
)
{
{
char
*
aux
;
char
*
aux
;
...
@@ -463,8 +455,8 @@ ean2ISBN(char *isn)
...
@@ -463,8 +455,8 @@ ean2ISBN(char *isn)
else
else
*
aux
=
check
+
'0'
;
*
aux
=
check
+
'0'
;
}
}
static
inline
void
static
inline
void
ean2ISMN
(
char
*
isn
)
ean2ISMN
(
char
*
isn
)
{
{
/* the number should come in this format: 979-0-000-00000-0 */
/* the number should come in this format: 979-0-000-00000-0 */
...
@@ -472,8 +464,8 @@ ean2ISMN(char *isn)
...
@@ -472,8 +464,8 @@ ean2ISMN(char *isn)
hyphenate
(
isn
,
isn
+
4
,
NULL
,
NULL
);
hyphenate
(
isn
,
isn
+
4
,
NULL
,
NULL
);
isn
[
0
]
=
'M'
;
isn
[
0
]
=
'M'
;
}
}
static
inline
void
static
inline
void
ean2ISSN
(
char
*
isn
)
ean2ISSN
(
char
*
isn
)
{
{
unsigned
check
;
unsigned
check
;
...
@@ -488,8 +480,8 @@ ean2ISSN(char *isn)
...
@@ -488,8 +480,8 @@ ean2ISSN(char *isn)
isn
[
8
]
=
check
+
'0'
;
isn
[
8
]
=
check
+
'0'
;
isn
[
9
]
=
'\0'
;
isn
[
9
]
=
'\0'
;
}
}
static
inline
void
static
inline
void
ean2UPC
(
char
*
isn
)
ean2UPC
(
char
*
isn
)
{
{
/* the number should come in this format: 000-000000000-0 */
/* the number should come in this format: 000-000000000-0 */
...
@@ -505,8 +497,7 @@ ean2UPC(char *isn)
...
@@ -505,8 +497,7 @@ ean2UPC(char *isn)
*
*
* Returns the ean13 value of the string.
* Returns the ean13 value of the string.
*/
*/
static
static
ean13
ean13
str2ean
(
const
char
*
num
)
str2ean
(
const
char
*
num
)
{
{
ean13
ean
=
0
;
/* current ean */
ean13
ean
=
0
;
/* current ean */
...
@@ -530,8 +521,7 @@ str2ean(const char *num)
...
@@ -530,8 +521,7 @@ str2ean(const char *num)
* If errorOK is false, ereport a useful error message if the string is bad.
* If errorOK is false, ereport a useful error message if the string is bad.
* If errorOK is true, just return "false" for bad input.
* If errorOK is true, just return "false" for bad input.
*/
*/
static
static
bool
bool
ean2string
(
ean13
ean
,
bool
errorOK
,
char
*
result
,
bool
shortType
)
ean2string
(
ean13
ean
,
bool
errorOK
,
char
*
result
,
bool
shortType
)
{
{
const
char
*
(
*
TABLE
)[
2
];
const
char
*
(
*
TABLE
)[
2
];
...
@@ -677,8 +667,7 @@ eantoobig:
...
@@ -677,8 +667,7 @@ eantoobig:
* if the input string ends with '!' it will always be treated as invalid
* if the input string ends with '!' it will always be treated as invalid
* (even if the check digit is valid)
* (even if the check digit is valid)
*/
*/
static
static
bool
bool
string2ean
(
const
char
*
str
,
bool
errorOK
,
ean13
*
result
,
string2ean
(
const
char
*
str
,
bool
errorOK
,
ean13
*
result
,
enum
isn_type
accept
)
enum
isn_type
accept
)
{
{
...
@@ -1110,7 +1099,6 @@ make_valid(PG_FUNCTION_ARGS)
...
@@ -1110,7 +1099,6 @@ make_valid(PG_FUNCTION_ARGS)
PG_RETURN_EAN13
(
val
);
PG_RETURN_EAN13
(
val
);
}
}
#ifdef ISN_WEAK_MODE
/* this function temporarily sets weak input flag
/* this function temporarily sets weak input flag
* (to lose the strictness of check digit acceptance)
* (to lose the strictness of check digit acceptance)
* It's a helper function, not intended to be used!!
* It's a helper function, not intended to be used!!
...
@@ -1119,18 +1107,13 @@ PG_FUNCTION_INFO_V1(accept_weak_input);
...
@@ -1119,18 +1107,13 @@ PG_FUNCTION_INFO_V1(accept_weak_input);
Datum
Datum
accept_weak_input
(
PG_FUNCTION_ARGS
)
accept_weak_input
(
PG_FUNCTION_ARGS
)
{
{
#ifdef ISN_WEAK_MODE
g_weak
=
PG_GETARG_BOOL
(
0
);
g_weak
=
PG_GETARG_BOOL
(
0
);
PG_RETURN_BOOL
(
g_weak
);
}
#else
#else
PG_FUNCTION_INFO_V1
(
accept_weak_input
);
Datum
accept_weak_input
(
PG_FUNCTION_ARGS
)
{
/* function has no effect */
/* function has no effect */
PG_RETURN_BOOL
(
false
);
}
#endif
/* ISN_WEAK_MODE */
#endif
/* ISN_WEAK_MODE */
PG_RETURN_BOOL
(
g_weak
);
}
PG_FUNCTION_INFO_V1
(
weak_input_status
);
PG_FUNCTION_INFO_V1
(
weak_input_status
);
Datum
Datum
...
...
contrib/isn/isn.h
View file @
5f77b1ac
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
*
*
* IDENTIFICATION
* IDENTIFICATION
* $PostgreSQL: pgsql/contrib/isn/isn.h,v 1.
5 2008/01/01 19:45:45 momjian
Exp $
* $PostgreSQL: pgsql/contrib/isn/isn.h,v 1.
6 2008/11/28 18:04:00 tgl
Exp $
*
*
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*/
*/
...
@@ -27,8 +27,8 @@ typedef uint64 ean13;
...
@@ -27,8 +27,8 @@ typedef uint64 ean13;
#define EAN13_FORMAT UINT64_FORMAT
#define EAN13_FORMAT UINT64_FORMAT
#define PG_GETARG_EAN13(n) PG_GETARG_INT64(
(int64)
n)
#define PG_GETARG_EAN13(n) PG_GETARG_INT64(n)
#define PG_RETURN_EAN13(x) PG_RETURN_INT64(
(int64)
x)
#define PG_RETURN_EAN13(x) PG_RETURN_INT64(x)
extern
Datum
isn_out
(
PG_FUNCTION_ARGS
);
extern
Datum
isn_out
(
PG_FUNCTION_ARGS
);
extern
Datum
ean13_out
(
PG_FUNCTION_ARGS
);
extern
Datum
ean13_out
(
PG_FUNCTION_ARGS
);
...
...
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