Ejemplo n.º 1
0
/*
 * Find the xattr_handler with the matching prefix.
 */
static struct xattr_handler *
xattr_resolve_name(struct xattr_handler **handlers, const char **name)
{
	struct xattr_handler *handler;

	if (!*name)
		return NULL;

	for_each_xattr_handler(handlers, handler) {
		const char *n = strcmp_prefix(*name, handler->prefix);
		if (n) {
			*name = n;
			break;
		}
	}
	return handler;
}
Ejemplo n.º 2
0
/*
 * strに対応するキーコードとエスケープシーケンスの長さを返す
 * 見つからなかったらUKey_Escapeと、途中まで一致しているエスケープシー
 * ケンスがある場合はTRUEない場合はFALSEを返す
 */
int *escape_sequence2key(const char *str, int str_len)
{
  static int rval[2];
  int len;
  int not_enough = 0;
  if        (                         (not_enough += len = strcmp_prefix(str, str_len, _KEY_UP      )), len > 0) { rval[0] = UKey_Up;
  } else if (                         (not_enough += len = strcmp_prefix(str, str_len, _KEY_DOWN    )), len > 0) { rval[0] = UKey_Down;
  } else if (                         (not_enough += len = strcmp_prefix(str, str_len, _KEY_RIGHT   )), len > 0) { rval[0] = UKey_Right;
  } else if (                         (not_enough += len = strcmp_prefix(str, str_len, _KEY_LEFT    )), len > 0) { rval[0] = UKey_Left;
  } else if (key_backspace != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_backspace)), len > 0)) { rval[0] = UKey_Backspace;
  } else if (key_dc        != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_dc       )), len > 0)) { rval[0] = UKey_Delete;    
  } else if (key_left      != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_left     )), len > 0)) { rval[0] = UKey_Left;
  } else if (key_up        != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_up       )), len > 0)) { rval[0] = UKey_Up;
  } else if (key_right     != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_right    )), len > 0)) { rval[0] = UKey_Right;
  } else if (key_down      != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_down     )), len > 0)) { rval[0] = UKey_Down;
  } else if (key_ppage     != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_ppage    )), len > 0)) { rval[0] = UKey_Prior;
  } else if (key_npage     != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_npage    )), len > 0)) { rval[0] = UKey_Next;
  } else if (key_home      != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_home     )), len > 0)) { rval[0] = UKey_Home;
  } else if (key_end       != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_end      )), len > 0)) { rval[0] = UKey_End;
  } else if (key_ic        != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_ic       )), len > 0)) { rval[0] = UKey_Insert;    
  } else if (key_f1        != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_f1       )), len > 0)) { rval[0] = UKey_F1;
  } else if (key_f2        != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_f2       )), len > 0)) { rval[0] = UKey_F2;
  } else if (key_f3        != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_f3       )), len > 0)) { rval[0] = UKey_F3;
  } else if (key_f4        != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_f4       )), len > 0)) { rval[0] = UKey_F4;
  } else if (key_f5        != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_f5       )), len > 0)) { rval[0] = UKey_F5;
  } else if (key_f6        != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_f6       )), len > 0)) { rval[0] = UKey_F6;
  } else if (key_f7        != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_f7       )), len > 0)) { rval[0] = UKey_F7;
  } else if (key_f8        != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_f8       )), len > 0)) { rval[0] = UKey_F8;
  } else if (key_f9        != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_f9       )), len > 0)) { rval[0] = UKey_F9;
  } else if (key_f10       != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_f10      )), len > 0)) { rval[0] = UKey_F10;
  } else if (key_f11       != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_f11      )), len > 0)) { rval[0] = UKey_F11;
  } else if (key_f12       != NULL && ((not_enough += len = strcmp_prefix(str, str_len, key_f12      )), len > 0)) { rval[0] = UKey_F12;
  } else {
    rval[0] = UKey_Other;
    len = not_enough < 0 ? TRUE : FALSE;
  }
  rval[1] = len;
  return rval;
}