Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
SDK
KDiff3
Commits
f17c7ce8
Commit
f17c7ce8
authored
Aug 15, 2016
by
Michael Reeves
Browse files
*reformat source files.
parent
0bd4dd9c
Changes
18
Expand all
Hide whitespace changes
Inline
Side-by-side
src/common.cpp
View file @
f17c7ce8
...
...
@@ -27,51 +27,43 @@
#include <QStringList>
#include <QTextStream>
ValueMap
::
ValueMap
()
{
ValueMap
::
ValueMap
()
{
}
ValueMap
::~
ValueMap
()
{
ValueMap
::~
ValueMap
()
{
}
void
ValueMap
::
save
(
QTextStream
&
ts
)
{
std
::
map
<
QString
,
QString
>::
iterator
i
;
for
(
i
=
m_map
.
begin
();
i
!=
m_map
.
end
();
++
i
)
{
QString
key
=
i
->
first
;
QString
val
=
i
->
second
;
ts
<<
key
<<
"="
<<
val
<<
"
\n
"
;
}
void
ValueMap
::
save
(
QTextStream
&
ts
)
{
std
::
map
<
QString
,
QString
>::
iterator
i
;
for
(
i
=
m_map
.
begin
();
i
!=
m_map
.
end
();
++
i
)
{
QString
key
=
i
->
first
;
QString
val
=
i
->
second
;
ts
<<
key
<<
"="
<<
val
<<
"
\n
"
;
}
}
QString
ValueMap
::
getAsString
()
{
QString
result
;
std
::
map
<
QString
,
QString
>::
iterator
i
;
for
(
i
=
m_map
.
begin
();
i
!=
m_map
.
end
();
++
i
)
{
QString
key
=
i
->
first
;
QString
val
=
i
->
second
;
result
+=
key
+
"="
+
val
+
"
\n
"
;
}
return
result
;
QString
ValueMap
::
getAsString
()
{
QString
result
;
std
::
map
<
QString
,
QString
>::
iterator
i
;
for
(
i
=
m_map
.
begin
();
i
!=
m_map
.
end
();
++
i
)
{
QString
key
=
i
->
first
;
QString
val
=
i
->
second
;
result
+=
key
+
"="
+
val
+
"
\n
"
;
}
return
result
;
}
void
ValueMap
::
load
(
QTextStream
&
ts
)
{
while
(
!
ts
.
atEnd
()
)
{
// until end of file...
QString
s
=
ts
.
readLine
();
// line of text excluding '\n'
int
pos
=
s
.
indexOf
(
'='
);
if
(
pos
>
0
)
// seems not to have a tag
{
QString
key
=
s
.
left
(
pos
);
QString
val
=
s
.
mid
(
pos
+
1
);
m_map
[
key
]
=
val
;
}
}
void
ValueMap
::
load
(
QTextStream
&
ts
)
{
while
(
!
ts
.
atEnd
()
)
{
// until end of file...
QString
s
=
ts
.
readLine
();
// line of text excluding '\n'
int
pos
=
s
.
indexOf
(
'='
);
if
(
pos
>
0
)
{
// seems not to have a tag
QString
key
=
s
.
left
(
pos
);
QString
val
=
s
.
mid
(
pos
+
1
);
m_map
[
key
]
=
val
;
}
}
}
/*
void ValueMap::load( const QString& s )
...
...
@@ -96,256 +88,247 @@ void ValueMap::load( const QString& s )
// safeStringJoin and safeStringSplit allow to convert a stringlist into a string and back
// safely, even if the individual strings in the list contain the separator character.
QString
safeStringJoin
(
const
QStringList
&
sl
,
char
sepChar
,
char
metaChar
)
{
// Join the strings in the list, using the separator ','
// If a string contains the separator character, it will be replaced with "\,".
// Any occurances of "\" (one backslash) will be replaced with "\\" (2 backslashes)
assert
(
sepChar
!=
metaChar
);
QString
sep
;
sep
+=
sepChar
;
QString
meta
;
meta
+=
metaChar
;
QString
safeString
;
QStringList
::
const_iterator
i
;
for
(
i
=
sl
.
begin
();
i
!=
sl
.
end
();
++
i
)
{
QString
s
=
*
i
;
s
.
replace
(
meta
,
meta
+
meta
);
// "\" -> "\\"
s
.
replace
(
sep
,
meta
+
sep
);
// "," -> "\,"
if
(
i
==
sl
.
begin
()
)
safeString
=
s
;
else
safeString
+=
sep
+
s
;
}
return
safeString
;
QString
safeStringJoin
(
const
QStringList
&
sl
,
char
sepChar
,
char
metaChar
)
{
// Join the strings in the list, using the separator ','
// If a string contains the separator character, it will be replaced with "\,".
// Any occurances of "\" (one backslash) will be replaced with "\\" (2 backslashes)
assert
(
sepChar
!=
metaChar
);
QString
sep
;
sep
+=
sepChar
;
QString
meta
;
meta
+=
metaChar
;
QString
safeString
;
QStringList
::
const_iterator
i
;
for
(
i
=
sl
.
begin
();
i
!=
sl
.
end
();
++
i
)
{
QString
s
=
*
i
;
s
.
replace
(
meta
,
meta
+
meta
);
// "\" -> "\\"
s
.
replace
(
sep
,
meta
+
sep
);
// "," -> "\,"
if
(
i
==
sl
.
begin
()
)
safeString
=
s
;
else
safeString
+=
sep
+
s
;
}
return
safeString
;
}
// Split a string that was joined with safeStringJoin
QStringList
safeStringSplit
(
const
QString
&
s
,
char
sepChar
,
char
metaChar
)
{
assert
(
sepChar
!=
metaChar
);
QStringList
sl
;
// Miniparser
int
i
=
0
;
int
len
=
s
.
length
();
QString
b
;
for
(
i
=
0
;
i
<
len
;
++
i
)
{
if
(
i
+
1
<
len
&&
s
[
i
]
==
metaChar
&&
s
[
i
+
1
]
==
metaChar
){
b
+=
metaChar
;
++
i
;
}
else
if
(
i
+
1
<
len
&&
s
[
i
]
==
metaChar
&&
s
[
i
+
1
]
==
sepChar
){
b
+=
sepChar
;
++
i
;
}
else
if
(
s
[
i
]
==
sepChar
)
// real separator
{
sl
.
push_back
(
b
);
b
=
""
;
}
else
{
b
+=
s
[
i
];
}
}
if
(
!
b
.
isEmpty
()
)
sl
.
push_back
(
b
);
return
sl
;
QStringList
safeStringSplit
(
const
QString
&
s
,
char
sepChar
,
char
metaChar
)
{
assert
(
sepChar
!=
metaChar
);
QStringList
sl
;
// Miniparser
int
i
=
0
;
int
len
=
s
.
length
();
QString
b
;
for
(
i
=
0
;
i
<
len
;
++
i
)
{
if
(
i
+
1
<
len
&&
s
[
i
]
==
metaChar
&&
s
[
i
+
1
]
==
metaChar
)
{
b
+=
metaChar
;
++
i
;
}
else
if
(
i
+
1
<
len
&&
s
[
i
]
==
metaChar
&&
s
[
i
+
1
]
==
sepChar
)
{
b
+=
sepChar
;
++
i
;
}
else
if
(
s
[
i
]
==
sepChar
)
{
// real separator
sl
.
push_back
(
b
);
b
=
""
;
}
else
{
b
+=
s
[
i
];
}
}
if
(
!
b
.
isEmpty
()
)
sl
.
push_back
(
b
);
return
sl
;
}
static
QString
numStr
(
int
n
)
{
QString
s
;
s
.
setNum
(
n
);
return
s
;
static
QString
numStr
(
int
n
)
{
QString
s
;
s
.
setNum
(
n
);
return
s
;
}
static
QString
subSection
(
const
QString
&
s
,
int
idx
,
char
sep
)
{
int
pos
=
0
;
while
(
idx
>
0
)
{
pos
=
s
.
indexOf
(
sep
,
pos
);
--
idx
;
if
(
pos
<
0
)
break
;
++
pos
;
}
if
(
pos
>=
0
)
{
int
pos2
=
s
.
indexOf
(
sep
,
pos
);
if
(
pos2
>
0
)
return
s
.
mid
(
pos
,
pos2
-
pos
);
else
return
s
.
mid
(
pos
);
}
return
""
;
static
QString
subSection
(
const
QString
&
s
,
int
idx
,
char
sep
)
{
int
pos
=
0
;
while
(
idx
>
0
)
{
pos
=
s
.
indexOf
(
sep
,
pos
);
--
idx
;
if
(
pos
<
0
)
break
;
++
pos
;
}
if
(
pos
>=
0
)
{
int
pos2
=
s
.
indexOf
(
sep
,
pos
);
if
(
pos2
>
0
)
return
s
.
mid
(
pos
,
pos2
-
pos
);
else
return
s
.
mid
(
pos
);
}
return
""
;
}
static
int
num
(
QString
&
s
,
int
idx
)
{
return
subSection
(
s
,
idx
,
','
).
toInt
();
static
int
num
(
QString
&
s
,
int
idx
)
{
return
subSection
(
s
,
idx
,
','
).
toInt
();
}
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
const
QFont
&
v
)
{
m_map
[
k
]
=
v
.
family
()
+
","
+
QString
::
number
(
v
.
pointSize
())
+
","
+
(
v
.
bold
()
?
"bold"
:
"normal"
);
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
const
QFont
&
v
)
{
m_map
[
k
]
=
v
.
family
()
+
","
+
QString
::
number
(
v
.
pointSize
()
)
+
","
+
(
v
.
bold
()
?
"bold"
:
"normal"
);
}
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
const
QColor
&
v
)
{
m_map
[
k
]
=
numStr
(
v
.
red
())
+
","
+
numStr
(
v
.
green
())
+
","
+
numStr
(
v
.
blue
());
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
const
QColor
&
v
)
{
m_map
[
k
]
=
numStr
(
v
.
red
()
)
+
","
+
numStr
(
v
.
green
()
)
+
","
+
numStr
(
v
.
blue
()
);
}
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
const
QSize
&
v
)
{
m_map
[
k
]
=
numStr
(
v
.
width
())
+
","
+
numStr
(
v
.
height
());
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
const
QSize
&
v
)
{
m_map
[
k
]
=
numStr
(
v
.
width
()
)
+
","
+
numStr
(
v
.
height
()
);
}
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
const
QPoint
&
v
)
{
m_map
[
k
]
=
numStr
(
v
.
x
())
+
","
+
numStr
(
v
.
y
());
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
const
QPoint
&
v
)
{
m_map
[
k
]
=
numStr
(
v
.
x
()
)
+
","
+
numStr
(
v
.
y
()
);
}
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
int
v
)
{
m_map
[
k
]
=
numStr
(
v
);
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
int
v
)
{
m_map
[
k
]
=
numStr
(
v
);
}
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
bool
v
)
{
m_map
[
k
]
=
numStr
(
v
);
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
bool
v
)
{
m_map
[
k
]
=
numStr
(
v
);
}
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
const
QString
&
v
)
{
m_map
[
k
]
=
v
;
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
const
QString
&
v
)
{
m_map
[
k
]
=
v
;
}
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
const
char
*
v
)
{
m_map
[
k
]
=
v
;
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
const
char
*
v
)
{
m_map
[
k
]
=
v
;
}
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
const
QStringList
&
v
,
char
separator
)
{
m_map
[
k
]
=
safeStringJoin
(
v
,
separator
);
void
ValueMap
::
writeEntry
(
const
QString
&
k
,
const
QStringList
&
v
,
char
separator
)
{
m_map
[
k
]
=
safeStringJoin
(
v
,
separator
);
}
QFont
ValueMap
::
readFontEntry
(
const
QString
&
k
,
const
QFont
*
defaultVal
)
{
QFont
f
=
*
defaultVal
;
std
::
map
<
QString
,
QString
>::
iterator
i
=
m_map
.
find
(
k
);
if
(
i
!=
m_map
.
end
()
)
{
f
.
setFamily
(
subSection
(
i
->
second
,
0
,
','
)
);
f
.
setPointSize
(
subSection
(
i
->
second
,
1
,
','
).
toInt
()
);
f
.
setBold
(
subSection
(
i
->
second
,
2
,
','
)
==
"bold"
);
//f.fromString(i->second);
}
QFont
ValueMap
::
readFontEntry
(
const
QString
&
k
,
const
QFont
*
defaultVal
)
{
QFont
f
=
*
defaultVal
;
std
::
map
<
QString
,
QString
>::
iterator
i
=
m_map
.
find
(
k
);
if
(
i
!=
m_map
.
end
()
)
{
f
.
setFamily
(
subSection
(
i
->
second
,
0
,
','
)
);
f
.
setPointSize
(
subSection
(
i
->
second
,
1
,
','
).
toInt
()
);
f
.
setBold
(
subSection
(
i
->
second
,
2
,
','
)
==
"bold"
);
//f.fromString(i->second);
}
return
f
;
return
f
;
}
QColor
ValueMap
::
readColorEntry
(
const
QString
&
k
,
const
QColor
*
defaultVal
)
{
QColor
c
=
*
defaultVal
;
std
::
map
<
QString
,
QString
>::
iterator
i
=
m_map
.
find
(
k
);
if
(
i
!=
m_map
.
end
()
)
{
QString
s
=
i
->
second
;
c
=
QColor
(
num
(
s
,
0
),
num
(
s
,
1
),
num
(
s
,
2
)
);
}
QColor
ValueMap
::
readColorEntry
(
const
QString
&
k
,
const
QColor
*
defaultVal
)
{
QColor
c
=
*
defaultVal
;
std
::
map
<
QString
,
QString
>::
iterator
i
=
m_map
.
find
(
k
);
if
(
i
!=
m_map
.
end
()
)
{
QString
s
=
i
->
second
;
c
=
QColor
(
num
(
s
,
0
),
num
(
s
,
1
),
num
(
s
,
2
)
);
}
return
c
;
return
c
;
}
QSize
ValueMap
::
readSizeEntry
(
const
QString
&
k
,
const
QSize
*
defaultVal
)
{
QSize
size
=
defaultVal
?
*
defaultVal
:
QSize
(
600
,
400
);
std
::
map
<
QString
,
QString
>::
iterator
i
=
m_map
.
find
(
k
);
if
(
i
!=
m_map
.
end
()
)
{
QSize
ValueMap
::
readSizeEntry
(
const
QString
&
k
,
const
QSize
*
defaultVal
)
{
QSize
size
=
defaultVal
?
*
defaultVal
:
QSize
(
600
,
400
);
std
::
map
<
QString
,
QString
>::
iterator
i
=
m_map
.
find
(
k
);
if
(
i
!=
m_map
.
end
()
)
{
QString
s
=
i
->
second
;
size
=
QSize
(
num
(
s
,
0
),
num
(
s
,
1
)
);
}
QString
s
=
i
->
second
;
size
=
QSize
(
num
(
s
,
0
),
num
(
s
,
1
)
);
}
return
size
;
return
size
;
}
QPoint
ValueMap
::
readPointEntry
(
const
QString
&
k
,
const
QPoint
*
defaultVal
)
{
QPoint
point
=
defaultVal
?
*
defaultVal
:
QPoint
(
0
,
0
);
std
::
map
<
QString
,
QString
>::
iterator
i
=
m_map
.
find
(
k
);
if
(
i
!=
m_map
.
end
()
)
{
QString
s
=
i
->
second
;
point
=
QPoint
(
num
(
s
,
0
),
num
(
s
,
1
)
);
}
QPoint
ValueMap
::
readPointEntry
(
const
QString
&
k
,
const
QPoint
*
defaultVal
)
{
QPoint
point
=
defaultVal
?
*
defaultVal
:
QPoint
(
0
,
0
);
std
::
map
<
QString
,
QString
>::
iterator
i
=
m_map
.
find
(
k
);
if
(
i
!=
m_map
.
end
()
)
{
QString
s
=
i
->
second
;
point
=
QPoint
(
num
(
s
,
0
),
num
(
s
,
1
)
);
}
return
point
;
return
point
;
}
bool
ValueMap
::
readBoolEntry
(
const
QString
&
k
,
bool
bDefault
)
{
bool
b
=
bDefault
;
std
::
map
<
QString
,
QString
>::
iterator
i
=
m_map
.
find
(
k
);
if
(
i
!=
m_map
.
end
()
)
{
QString
s
=
i
->
second
;
b
=
(
bool
)
num
(
s
,
0
);
}
bool
ValueMap
::
readBoolEntry
(
const
QString
&
k
,
bool
bDefault
)
{
bool
b
=
bDefault
;
std
::
map
<
QString
,
QString
>::
iterator
i
=
m_map
.
find
(
k
);
if
(
i
!=
m_map
.
end
()
)
{
QString
s
=
i
->
second
;
b
=
(
bool
)
num
(
s
,
0
);
}
return
b
;
return
b
;
}
int
ValueMap
::
readNumEntry
(
const
QString
&
k
,
int
iDefault
)
{
int
ival
=
iDefault
;
std
::
map
<
QString
,
QString
>::
iterator
i
=
m_map
.
find
(
k
);
if
(
i
!=
m_map
.
end
()
)
{
QString
s
=
i
->
second
;
ival
=
num
(
s
,
0
);
}
int
ValueMap
::
readNumEntry
(
const
QString
&
k
,
int
iDefault
)
{
int
ival
=
iDefault
;
std
::
map
<
QString
,
QString
>::
iterator
i
=
m_map
.
find
(
k
);
if
(
i
!=
m_map
.
end
()
)
{
QString
s
=
i
->
second
;
ival
=
num
(
s
,
0
);
}
return
ival
;
return
ival
;
}
QString
ValueMap
::
readStringEntry
(
const
QString
&
k
,
const
QString
&
sDefault
)
{
QString
sval
=
sDefault
;
std
::
map
<
QString
,
QString
>::
iterator
i
=
m_map
.
find
(
k
);
if
(
i
!=
m_map
.
end
()
)
{
sval
=
i
->
second
;
}
QString
ValueMap
::
readStringEntry
(
const
QString
&
k
,
const
QString
&
sDefault
)
{
QString
sval
=
sDefault
;
std
::
map
<
QString
,
QString
>::
iterator
i
=
m_map
.
find
(
k
);
if
(
i
!=
m_map
.
end
()
)
{
sval
=
i
->
second
;
}
return
sval
;
return
sval
;
}
QStringList
ValueMap
::
readListEntry
(
const
QString
&
k
,
const
QStringList
&
defaultVal
,
char
separator
)
{
QStringList
strList
;
QStringList
ValueMap
::
readListEntry
(
const
QString
&
k
,
const
QStringList
&
defaultVal
,
char
separator
)
{
QStringList
strList
;
std
::
map
<
QString
,
QString
>::
iterator
i
=
m_map
.
find
(
k
);
if
(
i
!=
m_map
.
end
()
)
{
strList
=
safeStringSplit
(
i
->
second
,
separator
);
return
strList
;
}
else
return
defaultVal
;
}
QString
ValueMap
::
readEntry
(
const
QString
&
s
,
const
QString
&
defaultVal
)
{
return
readStringEntry
(
s
,
defaultVal
);
}
QString
ValueMap
::
readEntry
(
const
QString
&
s
,
const
char
*
defaultVal
)
{
return
readStringEntry
(
s
,
QString
::
fromLatin1
(
defaultVal
)
);
}
QFont
ValueMap
::
readEntry
(
const
QString
&
s
,
const
QFont
&
defaultVal
){
return
readFontEntry
(
s
,
&
defaultVal
);
}
QColor
ValueMap
::
readEntry
(
const
QString
&
s
,
const
QColor
defaultVal
){
return
readColorEntry
(
s
,
&
defaultVal
);
}
QSize
ValueMap
::
readEntry
(
const
QString
&
s
,
const
QSize
defaultVal
){
return
readSizeEntry
(
s
,
&
defaultVal
);
}
QPoint
ValueMap
::
readEntry
(
const
QString
&
s
,
const
QPoint
defaultVal
){
return
readPointEntry
(
s
,
&
defaultVal
);
}
bool
ValueMap
::
readEntry
(
const
QString
&
s
,
bool
bDefault
){
return
readBoolEntry
(
s
,
bDefault
);
}
int
ValueMap
::
readEntry
(
const
QString
&
s
,
int
iDefault
){
return
readNumEntry
(
s
,
iDefault
);
}
QStringList
ValueMap
::
readEntry
(
const
QString
&
s
,
const
QStringList
&
defaultVal
,
char
separator
){
return
readListEntry
(
s
,
defaultVal
,
separator
);
}
std
::
map
<
QString
,
QString
>::
iterator
i
=
m_map
.
find
(
k
);
if
(
i
!=
m_map
.
end
()
)
{
strList
=
safeStringSplit
(
i
->
second
,
separator
);
return
strList
;
}
else
return
defaultVal
;
}
QString
ValueMap
::
readEntry
(
const
QString
&
s
,
const
QString
&
defaultVal
)
{
return
readStringEntry
(
s
,
defaultVal
);
}
QString
ValueMap
::
readEntry
(
const
QString
&
s
,
const
char
*
defaultVal
)
{
return
readStringEntry
(
s
,
QString
::
fromLatin1
(
defaultVal
)
);
}
QFont
ValueMap
::
readEntry
(
const
QString
&
s
,
const
QFont
&
defaultVal
)
{
return
readFontEntry
(
s
,
&
defaultVal
);
}
QColor
ValueMap
::
readEntry
(
const
QString
&
s
,
const
QColor
defaultVal
)
{
return
readColorEntry
(
s
,
&
defaultVal
);
}
QSize
ValueMap
::
readEntry
(
const
QString
&
s
,
const
QSize
defaultVal
)
{
return
readSizeEntry
(
s
,
&
defaultVal
);
}
QPoint
ValueMap
::
readEntry
(
const
QString
&
s
,
const
QPoint
defaultVal
)
{
return
readPointEntry
(
s
,
&
defaultVal
);
}
bool
ValueMap
::
readEntry
(
const
QString
&
s
,
bool
bDefault
)
{
return
readBoolEntry
(
s
,
bDefault
);
}
int
ValueMap
::
readEntry
(
const
QString
&
s
,
int
iDefault
)
{
return
readNumEntry
(
s
,
iDefault
);
}
QStringList
ValueMap
::
readEntry
(
const
QString
&
s
,
const
QStringList
&
defaultVal
,
char
separator
)
{
return
readListEntry
(
s
,
defaultVal
,
separator
);
}
src/diff.cpp
View file @
f17c7ce8
This diff is collapsed.
Click to expand it.
src/difftextwindow.cpp
View file @
f17c7ce8
This diff is collapsed.
Click to expand it.
src/directorymergewindow.cpp
View file @
f17c7ce8
This diff is collapsed.
Click to expand it.
src/fileaccess.cpp
View file @
f17c7ce8
This diff is collapsed.
Click to expand it.
src/gnudiff_analyze.cpp
View file @
f17c7ce8
This diff is collapsed.
Click to expand it.
src/gnudiff_io.cpp
View file @
f17c7ce8
This diff is collapsed.
Click to expand it.
src/gnudiff_xmalloc.cpp
View file @
f17c7ce8
...
...
@@ -35,52 +35,48 @@
#include "gnudiff_diff.h"
/* If non NULL, call this function when memory is exhausted. */
//void (*xalloc_fail_func) PARAMS ((void)) = 0;
void
(
*
xalloc_fail_func
)(
void
)
=
0
;
void
GnuDiff
::
xalloc_die
(
void
)
{
if
(
xalloc_fail_func
)
(
*
xalloc_fail_func
)
();
//error (exit_failure, 0, "%s", _(xalloc_msg_memory_exhausted));
/* The `noreturn' cannot be given to error, since it may return if
its first argument is 0. To help compilers understand the
xalloc_die does terminate, call exit. */
exit
(
EXIT_FAILURE
);
void
(
*
xalloc_fail_func
)(
void
)
=
0
;
void
GnuDiff
::
xalloc_die
(
void
)
{
if
(
xalloc_fail_func
)
(
*
xalloc_fail_func
)();
//error (exit_failure, 0, "%s", _(xalloc_msg_memory_exhausted));
/* The `noreturn' cannot be given to error, since it may return if
its first argument is 0. To help compilers understand the
xalloc_die does terminate, call exit. */
exit
(
EXIT_FAILURE
);
}
/* Allocate N bytes of memory dynamically, with error checking. */
void
*
GnuDiff
::
xmalloc
(
size_t
n
)
{
void
*
p
;
p
=
malloc
(
n
==
0
?
1
:
n
);
// There are systems where malloc returns 0 for n==0.
if
(
p
==
0
)
xalloc_die
();
return
p
;
GnuDiff
::
xmalloc
(
size_t
n
)
{
void
*
p
;
p
=
malloc
(
n
==
0
?
1
:
n
);
// There are systems where malloc returns 0 for n==0.
if
(
p
==
0
)
xalloc_die
();
return
p
;
}
/* Change the size of an allocated block of memory P to N bytes,
with error checking. */
void
*
GnuDiff
::
xrealloc
(
void
*
p
,
size_t
n
)
{
p
=
realloc
(
p
,
n
==
0
?
1
:
n
);
if
(
p
==
0
)
xalloc_die
();
return
p
;
GnuDiff
::
xrealloc
(
void
*
p
,
size_t
n
)
{
p
=
realloc
(
p
,
n
==
0
?
1
:
n
);
if
(
p
==
0
)
xalloc_die
();
return
p
;