Example #1
0
/* compare and publish */
static int got_full_match(struct ExecCtx *ctx, const struct Op *f_op, const char *str, struct GMatch *gm)
{
	int gno, cmp;

	/* tag group as matched */
	gm->end = str;

	/* ignore shorter matches */
	if (ctx->last_endpos && str < ctx->last_endpos)
		return 0;

	/* longer or equal length */
	if (str > ctx->last_endpos) {
		ctx->last_endpos = str;
		goto better_match;
	} else if (STRICT && ctx->nmatch > 1) {
		for (gno = 0; gno < ctx->nmatch; gno++) {
			cmp = gm_resolve_tie(ctx, gno);
			if (cmp < 0)
				break;
			if (cmp > 0)
				goto better_match;
		}
	}
	return 0;

better_match:
	for (gno = 0; gno < ctx->nmatch; gno++) {
		publish_gm(ctx, gno);
		fill_history(ctx, gno);
	}
	return 0;
}
Example #2
0
int		setting_42sh(t_shell *sh, char **argv, char **env)
{
  sh->ret = 0;
  sh->env = cpy_env(env);
  fill_history(sh);
  create_alias(sh);
  create_oldpwd(sh);
  create_set(sh);
  if (options(argv, sh))
    return (0);
  return (1);
}