1*219b2ee8SDavid du Colombier #include <sys/types.h> 2*219b2ee8SDavid du Colombier #include <unistd.h> 3*219b2ee8SDavid du Colombier #include <fcntl.h> 4*219b2ee8SDavid du Colombier #include <string.h> 5*219b2ee8SDavid du Colombier 6*219b2ee8SDavid du Colombier int 7*219b2ee8SDavid du Colombier putenv(char *s) 8*219b2ee8SDavid du Colombier { 9*219b2ee8SDavid du Colombier int f, n; 10*219b2ee8SDavid du Colombier char *value; 11*219b2ee8SDavid du Colombier char buf[300]; 12*219b2ee8SDavid du Colombier 13*219b2ee8SDavid du Colombier value = strchr(s, '='); 14*219b2ee8SDavid du Colombier if (value) { 15*219b2ee8SDavid du Colombier n = value-s; 16*219b2ee8SDavid du Colombier if(n<=0 || n > sizeof(buf)-1) 17*219b2ee8SDavid du Colombier return -1; 18*219b2ee8SDavid du Colombier strncpy(buf, s, n); 19*219b2ee8SDavid du Colombier buf[n] = 0; 20*219b2ee8SDavid du Colombier f = creat(buf, 0666); 21*219b2ee8SDavid du Colombier if(f < 0) 22*219b2ee8SDavid du Colombier return 1; 23*219b2ee8SDavid du Colombier value++; 24*219b2ee8SDavid du Colombier n = strlen(value); 25*219b2ee8SDavid du Colombier if(write(f, buf, n) != n) 26*219b2ee8SDavid du Colombier return -1; 27*219b2ee8SDavid du Colombier close(f); 28*219b2ee8SDavid du Colombier return 0; 29*219b2ee8SDavid du Colombier } else 30*219b2ee8SDavid du Colombier return -1; 31*219b2ee8SDavid du Colombier } 32