Archive-Unzip-Burst
view release on metacpan or search on metacpan
unzip-6.0/macos/source/getenv.c view on Meta::CPAN
See the accompanying file LICENSE, version 2000-Apr-09 or later
(the contents of which are also included in zip.h) for terms of use.
If, for some reason, all these files are missing, the Info-ZIP license
also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html
*/
/*
This file implements the getenv() function.
# Background:
# Under Unix: Each Process (= running Program) has a set of
# associated variables. The variables are called enviroment
# variables and, together, constitute the process environment.
# These variables include the search path, the terminal type,
# and the user's login name.
# Unfortunatelly the MacOS has no equivalent. So we need
# a file to define the environment variables.
# Name of this file is "MacZip.Env". It can be placed
# in the current folder of MacZip or in the
# preference folder of the system disk.
# If MacZip founds the "MacZip.Env" file in the current
# the folder of MacZip the "MacZip.Env" file in the
# preference folder will be ignored.
# An environment variable has a name and a value:
# Name=Value
# Note: Spaces are significant:
# ZIPOPT=-r and
# ZIPOPT = -r are different !!!
*/
/*****************************************************************************/
/* Includes */
/*****************************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <unix.h>
#include <Files.h>
#include <Folders.h>
#include "pathname.h"
#include "helpers.h"
/*****************************************************************************/
/* Module level Vars */
/*****************************************************************************/
static char ListAllKeyValues = 0;
static unsigned LineNumber = 0;
static char CompletePath[NAME_MAX];
Boolean IgnoreEnvironment = false; /* used by dialog.c and initfunc.c
of the Mainapp */
/*****************************************************************************/
/* Macros, typedefs */
/*****************************************************************************/
typedef struct _EnviromentPair {
char *key;
char *value;
} EnviromentPair;
#define MAX_COMMAND 1024
/*****************************************************************************/
/* Prototypes */
/*****************************************************************************/
int get_char(FILE *file);
void unget_char(int ch,FILE *file);
int get_string(char *string,int size, FILE *file, char *terms);
void skip_comments(FILE *file);
char *load_entry(FILE *file);
char *getenv(const char *name);
EnviromentPair *ParseLine(char *line);
OSErr FSpFindFolder_Name(short vRefNum, OSType folderType,
Boolean createFolder,FSSpec *spec, unsigned char *name);
FILE * FSp_fopen(ConstFSSpecPtr spec, const char * open_mode);
void ShowAllKeyValues(void);
void Set_LineNum(unsigned ln);
/*****************************************************************************/
/* Functions */
/*****************************************************************************/
/* get_string(str, max, file, termstr) : like fgets() but
* (1) has terminator string which should include \n
* (2) will always leave room for the null
* (3) uses get_char() so LineNumber will be accurate
* (4) returns EOF or terminating character, whichever
*/
int get_string(char *string, int size, FILE *file, char *terms)
{
int ch;
while (EOF != (ch = get_char(file)) && !strchr(terms, ch)) {
if (size > 1) {
*string++ = (char) ch;
size--;
}
}
if (size > 0)
{
*string = '\0';
}
return ch;
}
( run in 0.867 second using v1.01-cache-2.11-cpan-5735350b133 )