Subversion Repositories SvarDOS

Compare Revisions

Ignore whitespace Rev 218 → Rev 219

/pkginst/readenv.c
0,0 → 1,46
/*
* This file is part of FDNPKG.
*
* Reads environment variables that will be used by FDNPKG and FDINST.
* Returns 0 on success, non-zero otherwise.
*
* Copyright (C) 2012-2016 Mateusz Viste
*/
 
#include <stdio.h> /* snprintf() */
#include <stdlib.h> /* getenv() */
#include "kprintf.h" /* kprintf(), kputs() */
 
#include "readenv.h"
 
 
int readenv(char **dosdir, char **tempdir, char *cfgfile, int cfgfilemaxlen) {
char *cfg;
 
/* check if %DOSDIR% is set, and retrieve it */
*dosdir = getenv("DOSDIR");
if (*dosdir == NULL) {
kitten_puts(2, 2, "%DOSDIR% not set! You should make it point to the FreeDOS main directory.");
kitten_puts(2, 3, "Example: SET DOSDIR=C:\\FDOS");
return(-1);
}
 
/* check if %TEMP% is set, and retrieve it */
*tempdir = getenv("TEMP");
if (*tempdir == NULL) {
kitten_puts(2, 0, "%TEMP% not set! You should make it point to a writeable directory.");
kitten_puts(2, 1, "Example: SET TEMP=C:\\TEMP");
return(-2);
}
 
/* look for the FDNPKG.CFG env. variable */
cfg = getenv("FDNPKG.CFG");
cfgfilemaxlen -= 1; /* make room for the null terminator */
if (cfg != NULL) {
snprintf(cfgfile, cfgfilemaxlen, "%s", cfg);
} else { /* not set, so fallback to hardcoded location */
snprintf(cfgfile, cfgfilemaxlen, "%s\\bin\\fdnpkg.cfg", *dosdir);
}
 
return(0);
}