-
Notifications
You must be signed in to change notification settings - Fork 0
/
put_env.c
59 lines (50 loc) · 1.27 KB
/
put_env.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#ifndef LINT
static char sccs_put_id[] = "Module @(#)put_env.c Version 1.6 Date 00/11/08 Time 11:10:00";
#endif
/*-----------------------------------------------------------------------------
put_env.c : funzione per il cambiamento delle variabili di ambiente
Viene richiamata dai programmi Informix 4GL
Parametri in input: stringa (ex. DBSOC='0379'),
lunghezza della stringa
-----------------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
int put_env(void)
{
long i;
int j;
int conta;
char p_ambiente[256];
char *punta,b[128],c[128];
int stato = 0;
#ifdef ULTRIX
int setenv(char *,char *,int);
#else
int putenv(char *);
#endif
void *memset(void *,int,size_t);
memset((void *)p_ambiente,'\0',sizeof(p_ambiente));
poplong(&i);
#ifdef ULTRIX
popquote(p_ambiente,i);
#else
punta = malloc(sizeof(char) * i);
popquote(punta,i);
#endif
#ifdef ULTRIX
sscanf(p_ambiente,"%[^=]=%s",b,c);
if((punta = strchr(p_ambiente,'=')) != (char *)NULL) {
punta++;
stato = setenv(b,punta,1);
}
else
stato = -1;
#else
j = strlen(punta);
if (punta[j]==' '){
punta[j]='\0';}
stato = putenv(punta);
#endif
retint(stato);
return(1);
}