Don't trash argv[] so reread works properly.

This commit is contained in:
David F. Skoll
2008-01-28 11:28:17 -05:00
parent f055664f77
commit 518aab3d02
5 changed files with 25 additions and 19 deletions

View File

@@ -37,7 +37,7 @@ EXTERN int CurMon;
EXTERN int CurYear;
EXTERN int LineNo;
EXTERN int FreshLine;
EXTERN INIT( char *MsgCommand, NULL);
EXTERN INIT( char const *MsgCommand, NULL);
EXTERN INIT( int ShowAllErrors, 0);
EXTERN INIT( int DebugFlag, 0);
EXTERN INIT( int DoCalendar, 0);
@@ -61,7 +61,7 @@ EXTERN INIT( int SortByPrio, 0);
EXTERN INIT( int DefaultPrio, NO_PRIORITY);
EXTERN INIT( long SysTime, -1L);
EXTERN char *InitialFile;
EXTERN char const *InitialFile;
EXTERN int FileAccessDate;
EXTERN INIT( int DontFork, 0);
@@ -86,7 +86,7 @@ EXTERN INIT( int ShouldCache, 0);
EXTERN char *CurLine;
EXTERN INIT( int NumTriggered, 0);
EXTERN int ArgC;
EXTERN char **ArgV;
EXTERN char const **ArgV;
EXTERN INIT( int CalLines, CAL_LINES);
EXTERN INIT( int CalPad, 1);

View File

@@ -79,8 +79,8 @@ while (isdigit(*(s))) { \
s++; \
}
static void ChgUser(char *u);
static void InitializeVar(char *str);
static void ChgUser(char const *u);
static void InitializeVar(char const *str);
static char *BadDate = "Illegal date on command line\n";
@@ -94,7 +94,7 @@ static DynamicBuffer default_filename_buf;
/* default filename. Use $DOTREMINDERS or $HOME/.reminders */
/* */
/***************************************************************/
static char *DefaultFilename(void)
static char const *DefaultFilename(void)
{
char *s;
@@ -122,14 +122,14 @@ static char *DefaultFilename(void)
/* Initialize the system - called only once at beginning! */
/* */
/***************************************************************/
void InitRemind(int argc, char *argv[])
void InitRemind(int argc, char const *argv[])
{
char *arg;
char const *arg;
int i;
int y, m, d, rep;
Token tok;
int InvokedAsRem = 0;
char *s;
char const *s;
/* Initialize global dynamic buffers */
DBufInit(&Banner);
@@ -550,7 +550,7 @@ void Usage(void)
/* USER environment variables. */
/* */
/***************************************************************/
static void ChgUser(char *user)
static void ChgUser(char const *user)
{
uid_t myuid;
@@ -616,23 +616,29 @@ static void ChgUser(char *user)
/* Initialize and preserve a variable */
/* */
/***************************************************************/
static void InitializeVar(char *str)
static void InitializeVar(char const *str)
{
char const *varname;
char const *expr;
char varname[VAR_NAME_LEN+1];
Value val;
int r;
/* Scan for an '=' sign */
varname = str;
while (*str && *str != '=') str++;
r = 0;
while (*str && *str != '=') {
if (r < VAR_NAME_LEN) {
varname[r++] = *str;
}
str++;
}
varname[r] = 0;
if (!*str) {
fprintf(ErrFp, ErrMsg[M_I_OPTION], ErrMsg[E_MISS_EQ]);
return;
}
*str = 0;
if (!*varname) {
fprintf(ErrFp, ErrMsg[M_I_OPTION], ErrMsg[E_MISS_VAR]);
return;

View File

@@ -62,9 +62,9 @@ int main(int argc, char *argv[])
/* Set up global vars */
ArgC = argc;
ArgV = argv;
ArgV = (char const **) argv;
InitRemind(argc, argv);
InitRemind(argc, (char const **) argv);
if (DoCalendar || (DoSimpleCalendar && (!NextMode || PsCal))) {
ProduceCalendar();
return 0;

View File

@@ -44,7 +44,7 @@ int GetAccessDate (char const *file);
int SetAccessDate (char const *fname, int jul);
int TopLevel (void);
int CallFunc (Operator *f, int nargs);
void InitRemind (int argc, char *argv[]);
void InitRemind (int argc, char const *argv[]);
void Usage (void);
int Julian (int year, int month, int day);
void FromJulian (int jul, int *y, int *m, int *d);

View File

@@ -517,6 +517,6 @@ static void DaemonWait(unsigned int sleeptime)
/***************************************************************/
static void reread(void)
{
execvp(ArgV[0], ArgV);
execvp(ArgV[0], (char **) ArgV);
}