コード例 #1
0
ファイル: gcov.c プロジェクト: bdunlay/os-projects
int gcov_flush(cp_grant_id_t grantid, int bufsize)
{
    /* Initialize global state. */
    pos=0;
    grant = grantid;
    gcov_buff_sz = bufsize;
    assert(!gcov_enable);
    assert(!gcov_opened);
    gcov_enable = 1;

    /* Trigger copying.
     * This function is not always available, but there is a do-nothing
     * version in libc so that executables can be linked even without
     * this code ever being activated.
     */
    __gcov_flush();

    /* Mark the end of the data, stop. */
    add_int(GCOVOP_END);
    assert(!gcov_opened);
    assert(gcov_enable);
    gcov_enable = 0;

    /* Return number of bytes used in buffer. */
    return pos;
}
コード例 #2
0
ファイル: AntiSem.cpp プロジェクト: SergeyStrukov/CCore-2-99
void AntiSem::add_any(ulen dcount)
 {
  if( Dev::IsIntContext() )
    add_int(dcount);
  else
    add(dcount);
 }
コード例 #3
0
/// @memberof between/3
static Int cont_between(USES_REGS1) {
  Term t1 = EXTRA_CBACK_ARG(3, 1);
  Term t2 = EXTRA_CBACK_ARG(3, 2);

  Yap_unify(ARG3, t1);
  if (IsIntegerTerm(t1)) {
    Int i1;
    Term tn;

    if (t1 == t2)
      cut_succeed();
    i1 = IntegerOfTerm(t1);
    tn = add_int(i1, 1 PASS_REGS);
    EXTRA_CBACK_ARG(3, 1) = tn;
    HB = B->cp_h = HR;
    return TRUE;
  } else {
    Term t[2];
    Term tn;
    Int cmp;

    cmp = Yap_acmp(t1, t2 PASS_REGS);
    if (cmp == 0)
      cut_succeed();
    t[0] = t1;
    t[1] = MkIntTerm(1);
    tn = Eval(Yap_MkApplTerm(FunctorPlus, 2, t) PASS_REGS);
    EXTRA_CBACK_ARG(3, 1) = tn;
    HB = B->cp_h = HR;
    return TRUE;
  }
}
コード例 #4
0
ファイル: gcov.c プロジェクト: bdunlay/os-projects
FILE *_gcov_fopen(char *name, char *mode)
{
    if(!gcov_enable) return;

    assert(!gcov_opened);

    /* write information to buffer */
    add_int(GCOVOP_OPEN);
    add_int(strlen(name)+1);
    add_buff(name, strlen(name)+1);

    gcov_opened = 1;

    /* return dummy FILE *. */
    return &gcov_file;
}
コード例 #5
0
ファイル: main.c プロジェクト: Jeremielc/algo_tp6
QUEUE_INT checkAndAddCriticalTask(TASK* node, QUEUE_INT criticalTasks) {
    if (node->earlyDate == node->lateDate) {
        criticalTasks = add_int(node->id, criticalTasks);
    }

    return criticalTasks;
}
コード例 #6
0
ファイル: add.c プロジェクト: mewbak/decompiler-1
int main (void)
{
  x = add_int (1, 2);
  x = add_short (3, 4);
  x = add_ushort (5, 6);
  x = add_unsigned (7, 8);
  return 0;
}
コード例 #7
0
ファイル: gcov.c プロジェクト: bdunlay/os-projects
int _gcov_fclose(FILE *stream)
{
    if(!gcov_enable) return;

    add_int(GCOVOP_CLOSE);
    assert(gcov_opened);
    gcov_opened = 0;
    return 0;
}
コード例 #8
0
ファイル: util.hpp プロジェクト: fingolfin/gap-osx-binary
inline int sub_int(int a,int b)
// Calculating a-b; abortion by int overflow.
{
   if (b<0 && -b<0)
   { 
       std::cerr << "ERROR in int sub_int(int,int): Overflow!" << std::endl;
       exit(1);
   }
   return add_int(a,-b);
}
コード例 #9
0
ファイル: gcov.c プロジェクト: bdunlay/os-projects
size_t _gcov_fwrite(void *ptr, size_t itemsize, size_t nitems, FILE *stream)
{
    int size = itemsize * nitems;

    if(!gcov_enable) return;

    /* only have one file open at a time to ensure writes go
     * to the right place.
     */
    assert(gcov_opened);
    assert(stream == &gcov_file);

    /* write information to buffer */
    add_int(GCOVOP_WRITE);
    add_int(size);
    add_buff(ptr, size);

    return nitems;
}
コード例 #10
0
ファイル: threadtest.c プロジェクト: NTARelix/xv6
void
thread_add(int begin)
{
  printf(1, "Starting child thread\n");
  int i;
  for(i=0; i<amount; i++)
    add_int(begin + i);
  printf(1, "Finishing child thread\n");
  exit();
}
コード例 #11
0
ファイル: cmds.c プロジェクト: fuzzball81/QuasselC
void quassel_set_last_seen_msg(GIOChannel* h, int buffer_id, int msg_id) {
	char msg[2048];
	int size = 0;
	bzero(msg, sizeof(msg));

	//A list
	size += add_qvariant(msg+size, 9);
	//5 elements
	size += add_int(msg+size, 6);

	//A sync operation
	size += add_qvariant(msg+size, 2);
	size += add_int(msg+size, 1);

	//'BufferSyncer' bytearray
	size += add_qvariant(msg+size, 12);
	size += add_bytearray(msg+size, "BufferSyncer");

	//Empty string
	size += add_qvariant(msg+size, 10);
	size += add_int(msg+size, 0xffffffff);

	size += add_qvariant(msg+size, 12);
	size += add_bytearray(msg+size, "requestSetLastSeenMsg");

	//BufferId type
	size += add_qvariant(msg+size, 127);
	size += add_bytearray(msg+size, "BufferId");
	size += add_int(msg+size, buffer_id);

	//MsgId type
	size += add_qvariant(msg+size, 127);
	size += add_bytearray(msg+size, "MsgId");
	size += add_int(msg+size, msg_id);

	uint32_t v = htonl(size);
	write_io(h, (char*)&v, 4);
	write_io(h, msg, size);
}
コード例 #12
0
ファイル: threadtest.c プロジェクト: NTARelix/xv6
int
main (int argc, char* argv[])
{
  amount = atoi(argv[1]);
  int i = 0;
  char* stack;
  lock_init(&add);
  
  if ((stack = malloc(4096)) > 0)
    thread_create((void*)&thread_add, stack, 4096, &i);
  else
    printf(1, "Failed to malloc(4096) for new thread stack\n");
  int begin = amount * 2;
  add_int(begin++);
  for(i=1; i<amount; i++)
    add_int(begin++);
  ll_print(start);
  printf(1, "Main thread waiting for child thread finish\n");
  wait();
  ll_print(start);
  exit();
}
コード例 #13
0
ファイル: cmds.c プロジェクト: fuzzball81/QuasselC
void quassel_append_buffer(GIOChannel *h, int buffer) {
	char msg[2048];
	int size;

	size=0;
	bzero(msg, sizeof(msg));

	//QVariant<QList<QVariant>> of 6 elements
	size+=add_qvariant(msg+size, 9);
	size+=add_int(msg+size, 6);

	//QVariant<Int> = Sync
	size+=add_qvariant(msg+size, 2);
	size+=add_int(msg+size, 1);

	size+=add_qvariant(msg+size, 10);
	size+=add_string(msg+size, "BufferViewConfig");

	size+=add_qvariant(msg+size, 10);
	size+=add_string(msg+size, "0");

	size+=add_qvariant(msg+size, 10);
	size+=add_string(msg+size, "requestAddBuffer");

	size+=add_qvariant(msg+size, 127);
	size+=add_bytearray(msg+size, "BufferId");
	size+=add_int(msg+size, buffer);

	size+=add_qvariant(msg+size, 2);
	size+=add_int(msg+size, INT_MAX);


	//The message will be of that length
	uint32_t v=htonl(size);
	write_io(h, (char*)&v, 4);
	write_io(h, msg, size);
}
コード例 #14
0
ObjectSettings
BicyclePlatform::get_settings()
{
  auto result = GameObject::get_settings();

  result.add_float(_("X"), &m_center.x, "x", 0.0f, OPTION_HIDDEN);
  result.add_float(_("Y"), &m_center.y, "y", 0.0f, OPTION_HIDDEN);

  result.add_int(_("Platforms"), &m_platforms, "platforms", 2);
  result.add_float(_("Radius"), &m_radius, "radius", 128);
  result.add_float(_("Momentum change rate"), &m_momentum_change_rate, "momentum-change-rate", 0.1f);

  result.reorder({"platforms", "x", "y"});

  return result;
}
コード例 #15
0
ファイル: xcal.c プロジェクト: kolab-groupware/cyrus-imapd
/*
 * Add iCalendar recur-rule-parts to a structured element.
 */
void icalrecurrencetype_add_as_xxx(struct icalrecurrencetype *recur, void *obj,
                                   void (*add_int)(void *, const char *, int),
                                   void (*add_str)(void *, const char *,
                                           const char *))
{
    char *rrule, *rpart;
    tok_t rparts;

    /* generate an iCal RRULE string */
    rrule = icalrecurrencetype_as_string_r(recur);

    /* split string into rparts & values */
    tok_initm(&rparts, rrule, "=;", TOK_TRIMLEFT|TOK_TRIMRIGHT);
    while ((rpart = tok_next(&rparts))) {
        if (!strcmp(rpart, "UNTIL")) {
            /* need to translate date format to ISO */
            struct icaltimetype until = icaltime_from_string(tok_next(&rparts));

            add_str(obj, "until", icaltime_as_iso_string(until));
        }
        else {
            /* assume the rpart has multiple values - split them */
            tok_t vlist;
            char *val, *p;

            tok_init(&vlist, tok_next(&rparts), ",",
                     TOK_TRIMLEFT|TOK_TRIMRIGHT);
            while ((val = tok_next(&vlist))) {
                if (add_int) {
                    /* try converting value to integer */
                    int n = strtol(val, &p, 10);

                    if (n && !*p) {
                        add_int(obj, lcase(rpart), n);
                        continue;
                    }
                }

                add_str(obj, lcase(rpart), val);
            }
            tok_fini(&vlist);
        }
    }
    tok_fini(&rparts);

    free(rrule);
}
コード例 #16
0
ファイル: cmds.c プロジェクト: fuzzball81/QuasselC
void quassel_request_backlog(GIOChannel *h, int buffer, int first, int last, int limit, int additional) {
	char msg[2048];
	int size;
	
	size=0;
	bzero(msg, sizeof(msg));

	//QVariant<QList<QVariant>> of 9 elements
	size+=add_qvariant(msg+size, 9);
	size+=add_int(msg+size, 9);

	//QVariant<Int> = Sync
	size+=add_qvariant(msg+size, 2);
	size+=add_int(msg+size, 1);

	size+=add_qvariant(msg+size, 10);
	size+=add_string(msg+size, "BacklogManager");

	size+=add_qvariant(msg+size, 10);
	size+=add_string(msg+size, "");

	size+=add_qvariant(msg+size, 10);
	size+=add_string(msg+size, "requestBacklog");

	size+=add_qvariant(msg+size, 127);
	size+=add_bytearray(msg+size, "BufferId");
	size+=add_int(msg+size, buffer);

	size+=add_qvariant(msg+size, 127);
	size+=add_bytearray(msg+size, "MsgId");
	size+=add_int(msg+size, first);

	size+=add_qvariant(msg+size, 127);
	size+=add_bytearray(msg+size, "MsgId");
	size+=add_int(msg+size, last);

	size+=add_qvariant(msg+size, 2);
	size+=add_int(msg+size, limit);

	size+=add_qvariant(msg+size, 2);
	size+=add_int(msg+size, additional);


	//The message will be of that length
	uint32_t v=htonl(size);
	write_io(h, (char*)&v, 4);
	write_io(h, msg, size);
}
コード例 #17
0
int breakpoint_Relocation::pack_data() {
  short* p = data();

  assert(p == &live_bits(), "initializing live_bits");
  *p++ = _bits;

  jint target_bits = (jint) internal() ? scaled_offset           (_target)
				: runtime_address_to_index(_target);
  if (settable()) {
    // save space for set_target later
    add_long(p, target_bits);
  } else {
    add_int (p, target_bits);
  }

  for (int i = 0; i < instrlen(); i++) {
    add_short(p, (short)0x7777);    // placeholder value until bytes can be saved
  }

  return p - data();
}
コード例 #18
0
ファイル: gtop.c プロジェクト: ZevenOS/wnck-patches
static void register_constants(PyObject *module)
{
/* hum, libgto constant are unsigned long, but the biggest is (1UL << 18) so
   Int should be OK */


#define add_int(NAME, VALUE) PyModule_AddIntConstant(module, NAME, (VALUE))
#define add_flag(NAME, VALUE) add_int(NAME, (1UL << VALUE))

	add_flag("NETLOAD_IF_FLAGS_ALLMULTI",    GLIBTOP_IF_FLAGS_ALLMULTI);
	add_flag("NETLOAD_IF_FLAGS_ALTPHYS",     GLIBTOP_IF_FLAGS_ALTPHYS);
	add_flag("NETLOAD_IF_FLAGS_BROADCAST",   GLIBTOP_IF_FLAGS_BROADCAST);
	add_flag("NETLOAD_IF_FLAGS_DEBUG",	 GLIBTOP_IF_FLAGS_DEBUG);
	add_flag("NETLOAD_IF_FLAGS_LINK0",	 GLIBTOP_IF_FLAGS_LINK0);
	add_flag("NETLOAD_IF_FLAGS_LINK1",	 GLIBTOP_IF_FLAGS_LINK1);
	add_flag("NETLOAD_IF_FLAGS_LINK2",	 GLIBTOP_IF_FLAGS_LINK2);
	add_flag("NETLOAD_IF_FLAGS_LOOPBACK",    GLIBTOP_IF_FLAGS_LOOPBACK);
	add_flag("NETLOAD_IF_FLAGS_MULTICAST",   GLIBTOP_IF_FLAGS_MULTICAST);
	add_flag("NETLOAD_IF_FLAGS_NOARP",	 GLIBTOP_IF_FLAGS_NOARP);
	add_flag("NETLOAD_IF_FLAGS_OACTIVE",     GLIBTOP_IF_FLAGS_OACTIVE);
	add_flag("NETLOAD_IF_FLAGS_POINTOPOINT", GLIBTOP_IF_FLAGS_POINTOPOINT);
	add_flag("NETLOAD_IF_FLAGS_PROMISC",     GLIBTOP_IF_FLAGS_PROMISC);
	add_flag("NETLOAD_IF_FLAGS_RUNNING",     GLIBTOP_IF_FLAGS_RUNNING);
	add_flag("NETLOAD_IF_FLAGS_SIMPLEX",     GLIBTOP_IF_FLAGS_SIMPLEX);
	add_flag("NETLOAD_IF_FLAGS_UP",		 GLIBTOP_IF_FLAGS_UP);

	add_int("NETLOAD_SCOPE6_GLOBAL",  GLIBTOP_IF_IN6_SCOPE_GLOBAL);
	add_int("NETLOAD_SCOPE6_HOST",    GLIBTOP_IF_IN6_SCOPE_HOST);
	add_int("NETLOAD_SCOPE6_LINK",    GLIBTOP_IF_IN6_SCOPE_LINK);
	add_int("NETLOAD_SCOPE6_SITE",    GLIBTOP_IF_IN6_SCOPE_SITE);
	add_int("NETLOAD_SCOPE6_UNKNOWN", GLIBTOP_IF_IN6_SCOPE_UNKNOWN);

	add_int("PROCLIST_KERN_PROC_ALL",	GLIBTOP_KERN_PROC_ALL);
	add_int("PROCLIST_KERN_PROC_PID",	GLIBTOP_KERN_PROC_PID);
	add_int("PROCLIST_KERN_PROC_PGRP",	GLIBTOP_KERN_PROC_PGRP);
	add_int("PROCLIST_KERN_PROC_SESSION",	GLIBTOP_KERN_PROC_SESSION);
	add_int("PROCLIST_KERN_PROC_TTY",	GLIBTOP_KERN_PROC_TTY);
	add_int("PROCLIST_KERN_PROC_UID",	GLIBTOP_KERN_PROC_UID);
	add_int("PROCLIST_KERN_PROC_RUID",	GLIBTOP_KERN_PROC_RUID);
	add_int("PROCLIST_KERN_PROC_MASK",	GLIBTOP_KERN_PROC_MASK);
	add_int("PROCLIST_EXCLUDE_IDLE",	GLIBTOP_EXCLUDE_IDLE);
	add_int("PROCLIST_EXCLUDE_SYSTEM",	GLIBTOP_EXCLUDE_SYSTEM);
	add_int("PROCLIST_EXCLUDE_NOTTY",	GLIBTOP_EXCLUDE_NOTTY);

	add_int("PPP_STATE_UNKNOWN",	GLIBTOP_PPP_STATE_UNKNOWN);
	add_int("PPP_STATE_HANGUP",	GLIBTOP_PPP_STATE_HANGUP);
	add_int("PPP_STATE_ONLINE",	GLIBTOP_PPP_STATE_ONLINE);

	add_int("PROCESS_RUNNING",		GLIBTOP_PROCESS_RUNNING);
	add_int("PROCESS_INTERRUPTIBLE",	GLIBTOP_PROCESS_INTERRUPTIBLE);
	add_int("PROCESS_UNINTERRUPTIBLE",	GLIBTOP_PROCESS_UNINTERRUPTIBLE);
	add_int("PROCESS_ZOMBIE",		GLIBTOP_PROCESS_ZOMBIE);
	add_int("PROCESS_STOPPED",		GLIBTOP_PROCESS_STOPPED);
	add_int("PROCESS_SWAPPING",		GLIBTOP_PROCESS_SWAPPING);
	add_int("PROCESS_DEAD",			GLIBTOP_PROCESS_DEAD);

	add_int("MAP_PERM_READ",	GLIBTOP_MAP_PERM_READ);
	add_int("MAP_PERM_WRITE",	GLIBTOP_MAP_PERM_WRITE);
	add_int("MAP_PERM_EXECUTE", GLIBTOP_MAP_PERM_EXECUTE);
	add_int("MAP_PERM_SHARED",	GLIBTOP_MAP_PERM_SHARED);
	add_int("MAP_PERM_PRIVATE", GLIBTOP_MAP_PERM_PRIVATE);

	add_int("FILE_TYPE_FILE",	 GLIBTOP_FILE_TYPE_FILE);
	add_int("FILE_TYPE_PIPE",	 GLIBTOP_FILE_TYPE_PIPE);
	add_int("FILE_TYPE_INETSOCKET",  GLIBTOP_FILE_TYPE_INETSOCKET);
	add_int("FILE_TYPE_LOCALSOCKET", GLIBTOP_FILE_TYPE_LOCALSOCKET);

#undef add_flag
#undef add_int
}
コード例 #19
0
ファイル: constants.c プロジェクト: oflebbe/python-ldap
void
LDAPinit_constants( PyObject* d )
{
	PyObject *zero, *author,*obj;

	reverse = PyDict_New();
	forward = PyDict_New();
	
	PyDict_SetItemString( d, "_reverse", reverse );
	PyDict_SetItemString( d, "_forward", forward );

#define add_int(d, name)                                                \
	{								\
		PyObject *i = PyInt_FromLong(LDAP_##name);		\
		PyDict_SetItemString( d, #name, i );			\
		Py_DECREF(i);						\
	}

	/* simple constants */

	add_int(d,API_VERSION);
	add_int(d,VENDOR_VERSION);

        add_int(d,PORT);
	add_int(d,VERSION1);
	add_int(d,VERSION2);
	add_int(d,VERSION3);
	add_int(d,VERSION_MIN);
	add_int(d,VERSION);
	add_int(d,VERSION_MAX);
	add_int(d,TAG_MESSAGE);
	add_int(d,TAG_MSGID);

	add_int(d,REQ_BIND);
	add_int(d,REQ_UNBIND);
	add_int(d,REQ_SEARCH);
	add_int(d,REQ_MODIFY);
	add_int(d,REQ_ADD);
	add_int(d,REQ_DELETE);
	add_int(d,REQ_MODRDN);
	add_int(d,REQ_COMPARE);
	add_int(d,REQ_ABANDON);

	add_int(d,TAG_LDAPDN);
	add_int(d,TAG_LDAPCRED);
	add_int(d,TAG_CONTROLS);
	add_int(d,TAG_REFERRAL);

	add_int(d,REQ_EXTENDED);
#if LDAP_API_VERSION >= 2004
	add_int(d,TAG_NEWSUPERIOR);
	add_int(d,TAG_EXOP_REQ_OID);
	add_int(d,TAG_EXOP_REQ_VALUE);
	add_int(d,TAG_EXOP_RES_OID);
	add_int(d,TAG_EXOP_RES_VALUE);
#ifdef HAVE_SASL
	add_int(d,TAG_SASL_RES_CREDS);
#endif
#endif

	add_int(d,SASL_AUTOMATIC);
	add_int(d,SASL_INTERACTIVE);
	add_int(d,SASL_QUIET);

	/* reversibles */

	zero = PyInt_FromLong( 0 );
	PyDict_SetItem( reverse, zero, Py_None );
	Py_DECREF( zero );

	add_int(d,RES_BIND);
	add_int(d,RES_SEARCH_ENTRY);
	add_int(d,RES_SEARCH_RESULT);
	add_int(d,RES_MODIFY);
	add_int(d,RES_ADD);
	add_int(d,RES_DELETE);
	add_int(d,RES_MODRDN);
	add_int(d,RES_COMPARE);
	add_int(d,RES_ANY);

	add_int(d,RES_SEARCH_REFERENCE);
	add_int(d,RES_EXTENDED);
	add_int(d,RES_UNSOLICITED);

	/* non-reversibles */

	add_int(d,AUTH_NONE);
	add_int(d,AUTH_SIMPLE);
	add_int(d,SCOPE_BASE);
	add_int(d,SCOPE_ONELEVEL);
	add_int(d,SCOPE_SUBTREE);
	add_int(d,MOD_ADD);
	add_int(d,MOD_DELETE);
	add_int(d,MOD_REPLACE);
	add_int(d,MOD_INCREMENT);
	add_int(d,MOD_BVALUES);

	add_int(d,MSG_ONE);
	add_int(d,MSG_ALL);
	add_int(d,MSG_RECEIVED);

	/* (errors.c contains the error constants) */

	add_int(d,DEREF_NEVER);
	add_int(d,DEREF_SEARCHING);
	add_int(d,DEREF_FINDING);
	add_int(d,DEREF_ALWAYS);
	add_int(d,NO_LIMIT);

	add_int(d,OPT_API_INFO);
	add_int(d,OPT_DEREF);
	add_int(d,OPT_SIZELIMIT);
	add_int(d,OPT_TIMELIMIT);
#ifdef LDAP_OPT_REFERRALS
	add_int(d,OPT_REFERRALS);
#endif
	add_int(d,OPT_ERROR_NUMBER);
	add_int(d,OPT_RESTART);
	add_int(d,OPT_PROTOCOL_VERSION);
	add_int(d,OPT_SERVER_CONTROLS);
	add_int(d,OPT_CLIENT_CONTROLS);
	add_int(d,OPT_API_FEATURE_INFO);
	add_int(d,OPT_HOST_NAME);

	/* For backward-compability with OpenLDAP 2.3 libs this is defined in ldap/__init__.py */
	/* add_int(d,OPT_DIAGNOSTIC_MESSAGE); */

	add_int(d,OPT_ERROR_STRING);
	add_int(d,OPT_MATCHED_DN);
	add_int(d,OPT_DEBUG_LEVEL);
	add_int(d,OPT_TIMEOUT);
	add_int(d,OPT_REFHOPLIMIT);
	add_int(d,OPT_NETWORK_TIMEOUT);
	add_int(d,OPT_URI);
#ifdef HAVE_TLS
	add_int(d,OPT_X_TLS);
	add_int(d,OPT_X_TLS_CTX);
	add_int(d,OPT_X_TLS_CACERTFILE);
	add_int(d,OPT_X_TLS_CACERTDIR);
	add_int(d,OPT_X_TLS_CERTFILE);
	add_int(d,OPT_X_TLS_KEYFILE);
	add_int(d,OPT_X_TLS_REQUIRE_CERT);
	add_int(d,OPT_X_TLS_CIPHER_SUITE);
	add_int(d,OPT_X_TLS_RANDOM_FILE);
	add_int(d,OPT_X_TLS_NEVER);
	add_int(d,OPT_X_TLS_HARD);
	add_int(d,OPT_X_TLS_DEMAND);
	add_int(d,OPT_X_TLS_ALLOW);
	add_int(d,OPT_X_TLS_TRY);
        /* only available if OpenSSL supports it => might cause backward compability problems */
	add_int(d,OPT_X_TLS_CRLCHECK);
	add_int(d,OPT_X_TLS_CRL_NONE);
	add_int(d,OPT_X_TLS_CRL_PEER);
	add_int(d,OPT_X_TLS_CRL_ALL);
#endif
	add_int(d,OPT_X_SASL_MECH);
	add_int(d,OPT_X_SASL_REALM);
	add_int(d,OPT_X_SASL_AUTHCID);
	add_int(d,OPT_X_SASL_AUTHZID);
	add_int(d,OPT_X_SASL_SSF);
	add_int(d,OPT_X_SASL_SSF_EXTERNAL);
	add_int(d,OPT_X_SASL_SECPROPS);
	add_int(d,OPT_X_SASL_SSF_MIN);
	add_int(d,OPT_X_SASL_SSF_MAX);

	add_int(d,DN_FORMAT_LDAP);
	add_int(d,DN_FORMAT_LDAPV3);
	add_int(d,DN_FORMAT_LDAPV2);
	add_int(d,DN_FORMAT_DCE);
	add_int(d,DN_FORMAT_UFN);
	add_int(d,DN_FORMAT_AD_CANONICAL);
	/* add_int(d,DN_FORMAT_LBER); */    /* "for testing only" */
	add_int(d,DN_FORMAT_MASK);
	add_int(d,DN_PRETTY);
	add_int(d,DN_SKIP);
	add_int(d,DN_P_NOLEADTRAILSPACES);
	add_int(d,DN_P_NOSPACEAFTERRDN);
	add_int(d,DN_PEDANTIC);

	add_int(d,AVA_NULL);
	add_int(d,AVA_STRING);
	add_int(d,AVA_BINARY);
	add_int(d,AVA_NONPRINTABLE);
	
	/*add_int(d,OPT_ON);*/
	obj = PyInt_FromLong(1);
	PyDict_SetItemString( d, "LDAP_OPT_ON", obj );
	Py_DECREF(obj);
	/*add_int(d,OPT_OFF);*/
	obj = PyInt_FromLong(0);
	PyDict_SetItemString( d, "LDAP_OPT_OFF", obj );			
	Py_DECREF(obj);
	
	add_int(d,OPT_SUCCESS);

	/* XXX - these belong in errors.c */

	add_int(d,URL_ERR_BADSCOPE);
	add_int(d,URL_ERR_MEM);

	/* author */

	author = PyBytes_FromString("*****@*****.**");
	PyDict_SetItemString(d, "__author__", author);
	Py_DECREF(author);

	/* add_int(d,LIBLDAP_R); */
#ifdef HAVE_LIBLDAP_R
	obj = PyInt_FromLong(1);
#else
	obj = PyInt_FromLong(0);
#endif
	PyDict_SetItemString( d, "LIBLDAP_R", obj );
	Py_DECREF(obj);

	/* add_int(d,SASL); */
#ifdef HAVE_SASL
	obj = PyInt_FromLong(1);
#else
	obj = PyInt_FromLong(0);
#endif
	PyDict_SetItemString( d, "SASL_AVAIL", obj );
	Py_DECREF(obj);

	/* add_int(d,TLS); */
#ifdef HAVE_TLS
	obj = PyInt_FromLong(1);
#else
	obj = PyInt_FromLong(0);
#endif
	PyDict_SetItemString( d, "TLS_AVAIL", obj );
	Py_DECREF(obj);

	obj = PyBytes_FromString(LDAP_CONTROL_PAGE_OID);
	PyDict_SetItemString( d, "LDAP_CONTROL_PAGE_OID", obj );
	Py_DECREF(obj);

	obj = PyBytes_FromString(LDAP_CONTROL_VALUESRETURNFILTER);
	PyDict_SetItemString( d, "LDAP_CONTROL_VALUESRETURNFILTER", obj );
	Py_DECREF(obj);

}
コード例 #20
0
ファイル: diag.c プロジェクト: mre/mod_whatkilledus
int diag_describe(diag_output_t *o, diag_context_t *c)
{
    char buf[256];
    char *outch;
    char *lastoutch = buf + sizeof buf - 1;
    const char *ch;
    int i;
    DWORD bytes_written;
    
    outch = buf;
    outch = add_string(outch, lastoutch, "Process id:        ", NULL);
    outch = add_int(outch, lastoutch, (long long)_getpid(), 10);

    if (o->output_mode == DIAG_WRITE_FD) {
        outch = add_string(outch, lastoutch, "\r\n", NULL);
        WriteFile(o->outfile, buf, strlen(buf), &bytes_written, NULL);
    }
    else {
        o->output_fn(o->user_data, buf);
    }

    if (c->exception_record) {
        outch = buf;
        outch = add_string(outch, lastoutch, "Exception code:    ", NULL);

        ch = NULL;
        for (i = 0; i < sizeof(ec_strs) / sizeof(ec_strs[0]); i++) {
            if (ec_strs[i].symbol == c->exception_record->ExceptionCode) {
                ch = ec_strs[i].str;
                break;
            }
        }
        if (ch == NULL) {
            outch = add_int(outch, lastoutch, (long long)c->exception_record->ExceptionCode, 10);
        }
        else {
            outch = add_string(outch, lastoutch, ch, NULL);
        }

        if (o->output_mode == DIAG_WRITE_FD) {
            outch = add_string(outch, lastoutch, "\r\n", NULL);
            WriteFile(o->outfile, buf, strlen(buf), &bytes_written, NULL);
        }
        else {
            o->output_fn(o->user_data, buf);
        }

        outch = buf;

        outch = add_string(outch, lastoutch, "Exception address: ", NULL);
        outch = add_int(outch, lastoutch, (long long)c->exception_record->ExceptionAddress, 16);

        if (o->output_mode == DIAG_WRITE_FD) {
            outch = add_string(outch, lastoutch, "\r\n", NULL);
            WriteFile(o->outfile, buf, strlen(buf), &bytes_written, NULL);
        }
        else {
            o->output_fn(o->user_data, buf);
        }
    }
    return 0;
}
コード例 #21
0
ファイル: diag.c プロジェクト: mre/mod_whatkilledus
int diag_backtrace(diag_output_t *o, diag_backtrace_param_t *p, diag_context_t *c)
{
    char frame[128];
    char addr_buf[20];
    char offset_buf[20];
    char name_buf[80];
    char *name;
    const char *module_path, *module;
    int count, cur, rc;
    unw_context_t ctx;
    unw_cursor_t csr;
    unw_word_t ip, offp;
#if DIAG_PLATFORM_LINUX || DIAG_PLATFORM_FREEBSD || DIAG_PLATFORM_MACOSX
    Dl_info info;
#endif

    if (p->backtrace_count && p->backtrace_count < DIAG_BT_LIMIT) {
        count = p->backtrace_count;
    }
    else {
        count = DIAG_BT_LIMIT;
    }
    
    rc = unw_getcontext(&ctx);
    if (!rc) {
        rc = unw_init_local(&csr, &ctx);
    }

    if (rc) {
        return DIAG_ERR_INIT;
    }

    cur = 0;
    while ((rc = unw_step(&csr)) > 0) {

        cur++;
        if (cur > count) {
            break;
        }

        unw_get_reg(&csr, UNW_REG_IP, &ip);

        if (!ip) {
            break;
        }

        add_int(addr_buf, addr_buf + sizeof addr_buf - 1, ip, 16);

        rc = unw_get_proc_name(&csr, name_buf, sizeof name_buf, &offp);
        if (rc && rc != UNW_ENOMEM) {
            name = NULL;
        }
        else {
            name = name_buf;
        }

        module = module_path = NULL;
#if DIAG_PLATFORM_LINUX || DIAG_PLATFORM_FREEBSD || DIAG_PLATFORM_MACOSX
        if (p->backtrace_fields
            & (DIAG_BTFIELDS_MODULE_PATH | DIAG_BTFIELDS_MODULE_NAME)) {
            if ((rc = dladdr((void *)ip, &info)) != 0) {
                module_path = info.dli_fname;
                module = strrchr(module_path, '/');
                if (module) {
                    module += 1;
                }
            }
        }
#endif

        add_int(offset_buf, offset_buf + sizeof offset_buf - 1,
                offp, 16);
        output_frame(frame, frame + sizeof frame - 1,
                     p->backtrace_fields,
                     module_path, module, name, offset_buf, addr_buf);

        if (o->output_mode == DIAG_CALL_FN) {
            o->output_fn(o->user_data, frame);
        }
        else {
            write(o->outfile, frame, strlen(frame));
            write(o->outfile, "\n", 1);
        }
    }

    return 0;
}
コード例 #22
0
ファイル: diag.c プロジェクト: mre/mod_whatkilledus
int diag_backtrace(diag_output_t *o, diag_backtrace_param_t *p, diag_context_t *c)
{
    int cur = 0, count;
    STACKFRAME64 stackframe;
    CONTEXT context;
    HANDLE process = GetCurrentProcess();
    HANDLE thread = GetCurrentThread();
    DWORD bytes_written;

    if (c) {
        context = *c->context;
    }
    else {
        RtlCaptureContext(&context);
    }

    if (p->backtrace_count && p->backtrace_count < DIAG_BT_LIMIT) {
        count = p->backtrace_count;
    }
    else {
        count = DIAG_BT_LIMIT;
    }

    memset(&stackframe, 0, sizeof stackframe);
    stackframe.AddrPC.Mode = 
        stackframe.AddrFrame.Mode =
            stackframe.AddrStack.Mode = AddrModeFlat;

#ifdef DIAG_BITS_64
    stackframe.AddrPC.Offset    = context.Rip;
    stackframe.AddrFrame.Offset = context.Rbp;
    stackframe.AddrStack.Offset = context.Rsp;
#else
    stackframe.AddrPC.Offset    = context.Eip;
    stackframe.AddrFrame.Offset = context.Ebp;
    stackframe.AddrStack.Offset = context.Esp;
#endif

    if (!p->symbols_initialized) {
        SymInitialize(process, NULL, TRUE);
    }

    while (StackWalk64(
#ifdef DIAG_BITS_64
                       IMAGE_FILE_MACHINE_AMD64,
#else
                       IMAGE_FILE_MACHINE_I386,
#endif
                       process, thread,
                       &stackframe,
                       &context,
                       NULL,                       /* ReadMemoryRoutine */
                       SymFunctionTableAccess64,   /* FunctionTableAccessRoutine */
                       SymGetModuleBase64,         /* GetModuleBaseRoutine */
                       NULL)                       /* TranslateAddress */
           == TRUE) {
        char symbol_buffer[128] = {0};
        IMAGEHLP_SYMBOL64 *symbol = (IMAGEHLP_SYMBOL64 *)&symbol_buffer;
        DWORD64 ignored;
        const char *function;
        const char *offset;
        char address_buf[20], offset_buf[20];
        char buf[128];
        char *outch = buf;
        char *lastoutch = buf + sizeof buf - 1;

        if (cur + 1 > count) { /* avoid loop on corrupted chain, respect caller's wishes */
            break;
        }
        symbol->SizeOfStruct = sizeof(IMAGEHLP_SYMBOL64);
        symbol->MaxNameLength = sizeof(symbol_buffer) - sizeof(IMAGEHLP_SYMBOL64);
        ignored = 0;
        if (SymGetSymFromAddr64(process, stackframe.AddrPC.Offset, &ignored, symbol) != TRUE) {
            function = NULL;
            offset = NULL;
        }
        else {
            function = symbol->Name;
            add_int(offset_buf, offset_buf + sizeof offset_buf - 1,
                    stackframe.AddrPC.Offset - symbol->Address, 16);
            offset = offset_buf;
        }

        add_int(address_buf, address_buf + sizeof address_buf - 1,
                stackframe.AddrPC.Offset, 16);

        if (function && !strcmp(function, "diag_backtrace")) {
            /* filter outselves out */
            continue;
        }

        cur++; /* gonna keep this frame, so count it */

        output_frame(outch, lastoutch, p->backtrace_fields,
                     NULL, /* no module path */
                     NULL, /* no module */
                     function,
                     offset,
                     address_buf);

        if (o->output_mode == DIAG_CALL_FN) {
            o->output_fn(o->user_data, buf);
        }
        else {
            WriteFile(o->outfile, buf, strlen(buf), &bytes_written, NULL);
            WriteFile(o->outfile, "\r\n", 2, &bytes_written, NULL);
        }
    }

    return 0;
}