rpm
5.4.10
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
lib
misc.c
Go to the documentation of this file.
1
5
#include "system.h"
6
7
#include <
rpmversion.h
>
8
#include <
rpmiotypes.h
>
9
#include <
rpmlog.h
>
10
#include <
rpmurl.h
>
11
#include <
rpmmacro.h
>
/* XXX for rpmGetPath */
12
#include <
rpmtypes.h
>
13
#include "
misc.h
"
14
#include "
debug.h
"
15
16
/*@unchecked@*/
/*@observer@*/
17
const
char
*
RPMVERSION
=
VERSION
;
18
19
rpmRC
rpmMkdirPath
(
const
char
* dpath,
const
char
* dname)
20
{
21
struct
stat st;
22
int
rc;
23
24
if
((rc =
Stat
(dpath, &st)) < 0) {
25
int
ut =
urlPath
(dpath, NULL);
26
switch
(ut) {
27
case
URL_IS_PATH
:
28
case
URL_IS_UNKNOWN
:
29
if
(
errno
!= ENOENT)
30
break
;
31
/*@fallthrough@*/
32
case
URL_IS_HTTPS
:
33
case
URL_IS_HTTP
:
34
case
URL_IS_FTP
:
35
rc =
Mkdir
(dpath, 0755);
36
break
;
37
case
URL_IS_DASH
:
38
case
URL_IS_HKP
:
39
case
URL_IS_MONGO
:
/* XXX FIXME */
40
break
;
41
}
42
if
(rc < 0) {
43
rpmlog
(
RPMLOG_ERR
,
_
(
"cannot create %%%s %s\n"
), dname, dpath);
44
return
RPMRC_FAIL
;
45
}
46
}
47
return
RPMRC_OK
;
48
}
49
50
int
doputenv
(
const
char
*str)
51
{
52
char
* a;
53
54
/* FIXME: this leaks memory! */
55
a = (
char
*)
xmalloc
(strlen(str) + 1);
56
strcpy(a, str);
57
return
putenv(a);
58
}
59
60
int
dosetenv
(
const
char
*
name
,
const
char
* value,
int
overwrite)
61
{
62
char
* a;
63
64
if
(!overwrite &&
getenv
(name))
return
0;
65
66
/* FIXME: this leaks memory! */
67
a = (
char
*)
xmalloc
(strlen(name) + strlen(value) +
sizeof
(
"="
));
68
(void)
stpcpy
(
stpcpy
(
stpcpy
( a, name),
"="
), value);
69
return
putenv(a);
70
}
71
72
char
*
currentDirectory
(
void
)
73
{
74
int
currDirLen = 0;
75
char
* currDir = NULL;
76
77
do
{
78
currDirLen += 128;
79
currDir = (
char
*)
xrealloc
(currDir, currDirLen);
80
memset(currDir, 0, currDirLen);
81
}
while
(getcwd(currDir, currDirLen) == NULL &&
errno
== ERANGE);
82
83
return
currDir;
84
}
Generated on Mon Nov 5 2012 15:32:18 for rpm by
1.8.1.2