Beispiel #1
0
void do_REPEAT(u32_t *orig, u32_t *dest)
{
  COMPILE(&BRANCH);
  COMPILE((char *)dest - (char *)var_DP);

  *orig = (u32_t)((char *)var_DP - (char *)orig);
}
Beispiel #2
0
void do_TWOVARIABLE()
{
  counted_string_t *name = __read_word(' ');
  do_HEADER_COMMA(name);

  COMPILE(&DODOES);
  COMPILE(0);

  var_DP += 2;
}
Beispiel #3
0
u32_t *do_WHILE()
{
  u32_t *ref;

  COMPILE(&ZBRANCH);
  ref = var_DP;
  COMPILE(0);

  return ref;
}
Beispiel #4
0
u32_t *do_ELSE(u32_t *ref1)
{
  u32_t *ref2;

  COMPILE(&BRANCH);

  ref2 = var_DP;

  COMPILE(0);

  *ref1 = (u32_t)((char *)var_DP - (char *)ref1);
  return ref2;
}
Beispiel #5
0
static void
compile_regexps (void)
{
  const char *err;
  int offset;
  int p;

  /* These regexps are always used for partial matching.  In pcre < 8
   * there were limitations on the regexps possible for partial
   * matching, so fail if that is true here.  In pcre >= 8, all
   * regexps can be used in a partial match.
   */
#define CHECK_PARTIAL_OK(pattern, re)					\
  do {									\
    pcre_fullinfo ((re), NULL, PCRE_INFO_OKPARTIAL, &p);		\
    if (p != 1) {							\
      fprintf (stderr, "%s: %s:%d: internal error: pattern '%s' cannot be used for partial matching\n", \
	       getprogname (),				\
	       __FILE__, __LINE__, (pattern));				\
      abort ();								\
    }									\
  } while (0)

#define COMPILE(re,pattern,options)                                     \
  do {                                                                  \
    re = pcre_compile ((pattern), (options), &err, &offset, NULL);      \
    if (re == NULL) {                                                   \
      ignore_value (write (2, err, strlen (err)));                      \
      abort ();                                                         \
    }                                                                   \
    CHECK_PARTIAL_OK ((pattern), re);					\
  } while (0)

  COMPILE (password_re, "password:"******"(ssh: .*)", 0);
  COMPILE (sudo_password_re, "sudo: a password is required", 0);
  /* The magic synchronization strings all match this expression.  See
   * start_ssh function below.
   */
  COMPILE (prompt_re,
	   "###((?:[0123456789abcdefghijklmnopqrstuvwxyz]){8})### ", 0);
  COMPILE (version_re,
           "virt-v2v ([1-9].*)",
	   0);
  COMPILE (feature_libguestfs_rewrite_re, "libguestfs-rewrite", 0);
  COMPILE (feature_colours_option_re, "colours-option", 0);
  COMPILE (feature_input_re, "input:((?:\\w)*)", 0);
  COMPILE (feature_output_re, "output:((?:\\w)*)", 0);
  COMPILE (portfwd_re, "Allocated port ((?:\\d)+) for remote forward", 0);
}
Beispiel #6
0
static void
compile_regexps (void)
{
  const char *err;
  int offset;

#define COMPILE(re,pattern,options)                                     \
  do {                                                                  \
    re = pcre_compile ((pattern), (options), &err, &offset, NULL);      \
    if (re == NULL) {                                                   \
      ignore_value (write (2, err, strlen (err)));                      \
      abort ();                                                         \
    }                                                                   \
  } while (0)

  COMPILE (password_re, "assword", 0);
  /* The magic synchronization strings all match this expression.  See
   * start_ssh function below.
   */
  COMPILE (prompt_re, "###([0123456789abcdefghijklmnopqrstuvwxyz]{8})### ", 0);
  COMPILE (version_re,
           "virt-v2v ([1-9]\\d*)\\.([1-9]\\d*)\\.(0|[1-9]\\d*)", 0);
  COMPILE (feature_libguestfs_rewrite_re, "libguestfs-rewrite", 0);
  COMPILE (feature_input_re, "input:(\\w*)", 0);
  COMPILE (feature_output_re, "output:(\\w*)", 0);
  COMPILE (portfwd_re, "Allocated port (\\d+) for remote forward", 0);
}
Beispiel #7
0
static void
compile_regexps (void)
{
  const char *err;
  int offset;

#define COMPILE(re,pattern,options)                                     \
  do {                                                                  \
    re = pcre_compile ((pattern), (options), &err, &offset, NULL);      \
    if (re == NULL) {                                                   \
      ignore_value (write (2, err, strlen (err)));                      \
      abort ();                                                         \
    }                                                                   \
  } while (0)

  COMPILE (re_first_partition, "^/dev/(?:h|s|v)d.1$", 0);
  COMPILE (re_major_minor, "(\\d+)\\.(\\d+)", 0);
}
static void
compile_regexps (void)
{
  const char *err;
  int offset;

#define COMPILE(re,pattern,options)                                     \
  do {                                                                  \
    re = pcre_compile ((pattern), (options), &err, &offset, NULL);      \
    if (re == NULL) {                                                   \
      ignore_value (write (2, err, strlen (err)));                      \
      abort ();                                                         \
    }                                                                   \
  } while (0)

  COMPILE (re_windows_version, "^(\\d+)\\.(\\d+)", 0);
  COMPILE (re_boot_ini_os_header, "^\\[operating systems\\]\\s*$", 0);
  COMPILE (re_boot_ini_os, "^(multi|scsi)\\((\\d+)\\)disk\\((\\d+)\\)rdisk\\((\\d+)\\)partition\\((\\d+)\\)([^=]+)=", 0);
}
Beispiel #9
0
static void
compile_regexps (void)
{
  const char *err;
  int offset;

#define COMPILE(re,pattern,options)                                     \
  do {                                                                  \
    re = pcre_compile ((pattern), (options), &err, &offset, NULL);      \
    if (re == NULL) {                                                   \
      ignore_value (write (2, err, strlen (err)));                      \
      abort ();                                                         \
    }                                                                   \
  } while (0)

  COMPILE (re_file_elf,
           "ELF.*(?:executable|shared object|relocatable), (.+?),", 0);
  COMPILE (re_elf_ppc64, "64.*PowerPC", 0);
}
Beispiel #10
0
static void
compile_regexps (void)
{
  const char *err;
  int offset;

#define COMPILE(re,pattern,options)                                     \
  do {                                                                  \
    re = pcre_compile ((pattern), (options), &err, &offset, NULL);      \
    if (re == NULL) {                                                   \
      ignore_value (write (2, err, strlen (err)));                      \
      abort ();                                                         \
    }                                                                   \
  } while (0)

  COMPILE (re_fedora, "Fedora release (\\d+)", 0);
  COMPILE (re_rhel_old,
           "Red Hat.*release (\\d+).*Update (\\d+)", 0);
  COMPILE (re_rhel,
           "Red Hat.*release (\\d+)\\.(\\d+)", 0);
  COMPILE (re_rhel_no_minor,
           "Red Hat.*release (\\d+)", 0);
  COMPILE (re_centos_old,
           "CentOS.*release (\\d+).*Update (\\d+)", 0);
  COMPILE (re_centos,
           "CentOS.*release (\\d+)\\.(\\d+)", 0);
  COMPILE (re_centos_no_minor,
           "CentOS.*release (\\d+)", 0);
  COMPILE (re_scientific_linux_old,
           "Scientific Linux.*release (\\d+).*Update (\\d+)", 0);
  COMPILE (re_scientific_linux,
           "Scientific Linux.*release (\\d+)\\.(\\d+)", 0);
  COMPILE (re_scientific_linux_no_minor,
           "Scientific Linux.*release (\\d+)", 0);
  COMPILE (re_major_minor, "(\\d+)\\.(\\d+)", 0);
  COMPILE (re_xdev, "^/dev/(h|s|v|xv)d([a-z]+)(\\d*)$", 0);
  COMPILE (re_cciss, "^/dev/(cciss/c\\d+d\\d+)(?:p(\\d+))?$", 0);
  COMPILE (re_mdN, "^(/dev/md\\d+)$", 0);
  COMPILE (re_freebsd_mbr, "^/dev/(ada{0,1}|vtbd)(\\d+)s(\\d+)([a-z])$", 0);
  COMPILE (re_freebsd_gpt, "^/dev/(ada{0,1}|vtbd)(\\d+)p(\\d+)$", 0);
  COMPILE (re_diskbyid, "^/dev/disk/by-id/.*-part(\\d+)$", 0);
  COMPILE (re_netbsd, "^NetBSD (\\d+)\\.(\\d+)", 0);
  COMPILE (re_opensuse, "^(openSUSE|SuSE Linux|SUSE LINUX) ", 0);
  COMPILE (re_sles, "^SUSE (Linux|LINUX) Enterprise ", 0);
  COMPILE (re_nld, "^Novell Linux Desktop ", 0);
  COMPILE (re_opensuse_version, "^VERSION = (\\d+)\\.(\\d+)", 0);
  COMPILE (re_sles_version, "^VERSION = (\\d+)", 0);
  COMPILE (re_sles_patchlevel, "^PATCHLEVEL = (\\d+)", 0);
}
Beispiel #11
0
void do_INTERPRET(interpret_decision_t *decision)
{
#define SIGNAL_NOP()       do { decision->id_status = INTERPRET_NOP;          return; } while(0)
#define SIGNAL_EMPTY()     do { decision->id_status = INTERPRET_EMPTY;        return; } while(0)
#define SIGNAL_EXEC_WORD() do { decision->id_status = INTERPRET_EXECUTE_WORD; return; } while(0)
#define SIGNAL_EXEC_LIT()  do { decision->id_status = INTERPRET_EXECUTE_LIT;  return; } while(0)
#define SIGNAL_EXEC_2LIT() do { decision->id_status = INTERPRET_EXECUTE_2LIT; return; } while(0)

  counted_string_t *wb = __read_word(' ');

  if (!wb->cs_len) {
    print_prompt(var_SHOW_PROMPT);
    __refill_input_buffer();

    SIGNAL_EMPTY();
  }

  word_header_t *word;
  int found = fw_search(wb, &word);

  if (found) {
    cf_t *cfa = fw_code_field(word);

    if (IS_INTERPRET() || word->wh_flags & F_IMMED) {
      decision->u.id_cfa = cfa;
      SIGNAL_EXEC_WORD();
    }

    COMPILE(cfa);
    SIGNAL_NOP();
  }

  parse_number_result_t pnr;
  int ret = parse_number(wb, &pnr);

  if (ret == -1 || pnr.nr_remaining != 0) {
    __ERR_undefined_word();

    var_STATE = STATE_INTERPRET;
    __refill_input_buffer();
    SIGNAL_NOP();
  }

  if (ret == 0) {
    if (IS_INTERPRET()) {
      decision->u.id_number = pnr.nr_number_lo;
      SIGNAL_EXEC_LIT();
    }

#if (CONFIG_PEEPHOLE == 1)
    switch(pnr.nr_number_lo) {
      case 0:
        COMPILE(&SI_LIT_0);
        break;
      case 1:
        COMPILE(&SI_LIT_1);
        break;
      case 2:
        COMPILE(&SI_LIT_2);
        break;
      case 0xFFFFFFFF:
        COMPILE(&SI_LIT_FFFFFFFF);
        break;
      default:
        COMPILE(&LIT);
        COMPILE(pnr.nr_number_lo);
        break;
    }
#else
    COMPILE(&LIT);
    COMPILE(pnr.nr_number_lo);
#endif
  } else {
    if (IS_INTERPRET()) {
      decision->u.id_double_number[0] = pnr.nr_number_lo;
      decision->u.id_double_number[1] = pnr.nr_number_hi;
      SIGNAL_EXEC_2LIT();
    }

    COMPILE((u32_t)&TWOLIT);
    COMPILE(pnr.nr_number_lo);
    COMPILE(pnr.nr_number_hi);
  }

  SIGNAL_NOP();
}
Beispiel #12
0
static void create(varargs int clone)
{
	TestRunner runner;

	COMPILE(HTTP_LOGD);						/* Log daemon */
	COMPILE(DAV_HOME + "initd");			/* Initialize DAV objects */
	COMPILE(HTTP_AUTHENTICATE);				/* Authentication daemon */
	COMPILE(HTTP_AUTHORIZE);				/* Authorization daemon */
#if 0
	COMPILE(HTTP_STATUSD_400_500);			/* Error-page handler */
#endif
	COMPILE(HTTP_SERVER);					/* The web-server */
	COMPILE(HTTP_APP);						/* Web-application container */
	COMPILE(HTTP_MIME);						/* Mime container */
	COMPILE(HTTP_COOKIE);					/* Cookie container */
	COMPILE(HTTP_SESSION);					/* Session container */
	COMPILE(HTTP_USER);						/* http user object */
	COMPILE(HTTP_CONTENT);					/* Content container */
	COMPILE(HTTP_REQUEST);					/* Request object */
	COMPILE(HTTP_RESPONSE);					/* Response object */
	COMPILE(HTTP_URI);						/* URI object */

	/* Run the TestAll test-suite */
	runner = new_object(JORINDE_LUNIT + "data/runner");
	runner->initialize( HTTP_HOME + "tests/TestAll" );
	runner->silent_on_success(TRUE);
	runner->error_on_failure(TRUE);
	runner->run();

	/* Done initializing */
	server = find_object(HTTP_SERVER);		/* ... keep reference to this */
	if(server->is_started()) {
		DGDSYSLOG(server->get_server_string() + " started.\n"); 
		DGDSYSLOG("Log: " + (SERVER_LOG)[1..] + "\n");
	} else {
Beispiel #13
0
void do_AGAIN(u32_t *dest)
{
  COMPILE(&BRANCH);
  COMPILE((char *)dest - (char *)var_DP);
}
Beispiel #14
0
void do_UNTIL(u32_t *dest)
{
  COMPILE(&ZBRANCH);
  COMPILE((char *)dest - (char *)var_DP);
}