1219b2ee8SDavid du Colombier #include <sys/types.h> 2219b2ee8SDavid du Colombier #include <unistd.h> 3219b2ee8SDavid du Colombier #include <fcntl.h> 4219b2ee8SDavid du Colombier #include <string.h> 5219b2ee8SDavid du Colombier 6219b2ee8SDavid du Colombier int putenv(char * s)7219b2ee8SDavid du Colombierputenv(char *s) 8219b2ee8SDavid du Colombier { 9219b2ee8SDavid du Colombier int f, n; 10219b2ee8SDavid du Colombier char *value; 11219b2ee8SDavid du Colombier char buf[300]; 12219b2ee8SDavid du Colombier 13219b2ee8SDavid du Colombier value = strchr(s, '='); 14219b2ee8SDavid du Colombier if (value) { 15219b2ee8SDavid du Colombier n = value-s; 16*7dd7cddfSDavid du Colombier if(n<=0 || n > sizeof(buf)-6) 17219b2ee8SDavid du Colombier return -1; 18*7dd7cddfSDavid du Colombier strcpy(buf, "/env/"); 19*7dd7cddfSDavid du Colombier strncpy(buf+5, s, n); 20*7dd7cddfSDavid du Colombier buf[n+5] = 0; 21219b2ee8SDavid du Colombier f = creat(buf, 0666); 22219b2ee8SDavid du Colombier if(f < 0) 23219b2ee8SDavid du Colombier return 1; 24219b2ee8SDavid du Colombier value++; 25219b2ee8SDavid du Colombier n = strlen(value); 26*7dd7cddfSDavid du Colombier if(write(f, value, n) != n) 27219b2ee8SDavid du Colombier return -1; 28219b2ee8SDavid du Colombier close(f); 29219b2ee8SDavid du Colombier return 0; 30219b2ee8SDavid du Colombier } else 31219b2ee8SDavid du Colombier return -1; 32219b2ee8SDavid du Colombier } 33