IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 6424 for trunk/Ohana/src/opihi


Ignore:
Timestamp:
Feb 13, 2006, 9:27:46 AM (20 years ago)
Author:
eugene
Message:

various minor fixes

Location:
trunk/Ohana/src/opihi
Files:
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/lib.shell/expand_vars.c

    r3922 r6424  
    7171      *N = *Val; /* place the value of the variable in the newline */
    7272    }
     73    N--; /* we overshoot on last loop */
    7374
    74     for (N--,L++; ISVAR(*L); L++);
    75     L--;
     75    /* skip past the variable in the source line */
     76    /* L currently points at $ */
     77    L++;
     78    if (*L == '?') L++;  /* skip past ? in $?name */
     79
     80    while (ISVAR(*L)) L++;
     81    L--; /* we overshoot */
    7682
    7783    if (V0 != NULL) free (V0);
  • trunk/Ohana/src/opihi/lib.shell/string.c

    r2598 r6424  
    9494char *thisvar (char *string) {
    9595
    96   int i;
     96  int i, start;
    9797  char *word;
    9898
     
    100100  if (string[0] != '$') return ((char *) NULL);
    101101
    102   for (i = 1; ISVAR(string[i]); i++);
    103   if (i == 1) return ((char *) NULL);
    104 
     102  /* special case $?name : check that name is valid */
     103  start = 1;
     104  if (string[1] == '?') start = 2;
     105
     106  for (i = start; ISVAR(string[i]); i++);
     107  if (i == start) return ((char *) NULL);
     108
     109  /* the ? is part of the variable */
    105110  word = strncreate (&string[1], i - 1);
    106111  return (word);
     
    207212char *aftervar (char *string) {
    208213
    209   int i, j;
     214  int i, j, start;
    210215
    211216  if (string == (char *) NULL) return ((char *) NULL);
    212217  if (string[0] != '$') return ((char *) NULL);
    213218
    214   for (i = 1; ISVAR(string[i]); i++);
    215   if (i == 1) return ((char *) NULL);
     219  /* special case: $?name : test only name */
     220  start = 1;
     221  if (string[1] == '?') start = 2;
     222
     223  for (i = start; ISVAR(string[i]); i++);
     224  if (i == start) return ((char *) NULL);
    216225
    217226  for (j = i; whitespace (string[j]); j++);
  • trunk/Ohana/src/opihi/lib.shell/variable.c

    r6327 r6424  
    103103 
    104104  int i;
    105   char *local, *MacroName;
     105  char *local, *MacroName, *value;
    106106
    107107  if (name == NULL) return (NULL);
     
    111111  /* return a string which should not be freed */
    112112  if (*name == '?') {
    113     value = get_variable_ptr (name[1]);
     113    value = get_variable_ptr (&name[1]);
    114114    if (value == NULL) {
    115115      return variable_false;
     
    152152  /* return a string which can be freed */
    153153  if (*name == '?') {
    154     value = get_variable_ptr (name[1]);
     154    value = get_variable_ptr (&name[1]);
    155155    if (value == NULL) {
    156156      value = strcreate (variable_false);
Note: See TracChangeset for help on using the changeset viewer.