示例#1
0
void Winapi
ec_post_goal(const pword goal)
{
    pword *pw;

    if (g_emu_.nesting_level > 1)
	ec_panic("can't post goal to nested engine","ec_post_goal()");

    pw = TG;					/* new list element */
    Push_List_Frame();
    pw[0] = goal;
    Make_Var(&pw[1]);

    Bind_(POSTED_LAST.val.ptr, pw, TLIST);	/* append */
    ec_assign(&POSTED_LAST, pw[1].val, pw[1].tag);
}
示例#2
0
static pword
_get_posted_goals(void)
{
    pword posted, empty;

    /* terminate the posted-goals-list and copy its beginning */
    Bind_(POSTED_LAST.val.ptr, 0, TNIL);
    posted = POSTED;

    /* reinitialise the list to an empty difference list */
    Make_Ref(&empty, TG);
    Push_Var();
    ec_assign(&POSTED, empty.val, empty.tag);
    ec_assign(&POSTED_LAST, empty.val, empty.tag);

    return posted;
}
示例#3
0
/* init_AcceptSock()
 */
static void
init_AcceptSock (void)
{
  static char fname[] = "init_AcceptSock()";
  struct servent *sv;
  struct sockaddr_in svaddr;
  socklen_t len;
  int one = 1;
  struct hostent *hp;

  memset ((char *) &svaddr, 0, sizeof (svaddr));
  if ((accept_sock = socket (AF_INET, SOCK_STREAM, 0)) < 0)
    {
      ls_syslog (LOG_ERR, I18N_FUNC_S_FAIL_M, fname, "socket", "RES");
      resExit_ (1);
    }

  setsockopt (accept_sock, SOL_SOCKET, SO_REUSEADDR, (char *) &one,
	      sizeof (int));

  if (io_nonblock_ (accept_sock) < 0)
    ls_syslog (LOG_ERR, I18N_FUNC_D_FAIL_M, fname, "io_nonblock_",
	       accept_sock);

  fcntl (accept_sock, F_SETFD, (fcntl (accept_sock, F_GETFD) | FD_CLOEXEC));


  if (resParams[LSF_RES_PORT].paramValue)
    {
      if ((svaddr.sin_port = atoi (resParams[LSF_RES_PORT].paramValue)) == 0)
	{
	  ls_syslog (LOG_ERR, _i18n_msg_get (ls_catd, NL_SETN, 5307, "%s: LSF_RES_PORT in lsf.conf (%s) must be positive integer; exiting"), fname, resParams[LSF_RES_PORT].paramValue);	/* catgets 5307 */
	  resExit_ (1);
	}
      svaddr.sin_port = htons (svaddr.sin_port);
    }
  else if (debug)
    {
      svaddr.sin_port = htons (RES_PORT);
    }
  else
    {
      if ((sv = getservbyname ("res", "tcp")) == NULL)
	{
	  ls_syslog (LOG_ERR, _i18n_msg_get (ls_catd, NL_SETN, 5309, "%s: res/tcp: unknown service, exiting"), fname);	/* catgets 5309 */
	  resExit_ (1);
	}
      svaddr.sin_port = sv->s_port;
    }

  svaddr.sin_family = AF_INET;
  svaddr.sin_addr.s_addr = INADDR_ANY;
  if (Bind_ (accept_sock, (struct sockaddr *) &svaddr, sizeof (svaddr)) < 0)
    {
      ls_syslog (LOG_ERR, I18N_FUNC_D_FAIL_M, fname, "accept_sock",
		 ntohs (svaddr.sin_port));
      resExit_ (1);
    }

  if (listen (accept_sock, 1024) < 0)
    {
      ls_syslog (LOG_ERR, I18N_FUNC_FAIL_M, fname, "listen");
      resExit_ (1);
    }

  if ((ctrlSock = TcpCreate_ (TRUE, 0)) < 0)
    {
      ls_syslog (LOG_ERR, I18N_FUNC_FAIL_M, fname, "TcpCreate_");
      resExit_ (1);
    }

  len = sizeof (ctrlAddr);
  memset ((char *) &ctrlAddr, 0, sizeof (ctrlAddr));
  if (getsockname (ctrlSock, (struct sockaddr *) &ctrlAddr, &len) < 0)
    {
      ls_syslog (LOG_ERR, I18N_FUNC_D_FAIL_M, fname, "getsockname", ctrlSock);
      resExit_ (-1);
    }

  if ((hp = Gethostbyname_ (Myhost)))
    memcpy ((char *) &ctrlAddr.sin_addr,
	    (char *) hp->h_addr, (int) hp->h_length);
}