Exemplo n.º 1
0
/* assertEqualString() displays the values of the two strings. */
int
test_assert_equal_string(const char *file, int line,
    const char *v1, const char *e1,
    const char *v2, const char *e2,
    void *extra)
{
	++assertions;
	if (v1 == NULL || v2 == NULL) {
		if (v1 == v2) {
			msg[0] = '\0';
			return (1);
		}
	} else if (strcmp(v1, v2) == 0) {
		msg[0] = '\0';
		return (1);
	}
	failures ++;
	if (!verbose && previous_failures(file, line))
		return (0);
	fprintf(stderr, "%s:%d: Assertion failed: Strings not equal\n",
	    file, line);
	fprintf(stderr, "      %s = ", e1);
	strdump(v1);
	fprintf(stderr, " (length %d)\n", v1 == NULL ? 0 : strlen(v1));
	fprintf(stderr, "      %s = ", e2);
	strdump(v2);
	fprintf(stderr, " (length %d)\n", v2 == NULL ? 0 : strlen(v2));
	report_failure(extra);
	return (0);
}
Exemplo n.º 2
0
            //----------------------------------------------------------
            LCLine* LCLine_new(char* I,char* P,char* Pi,char* KP)
            { LCLine* lcl=(LCLine*)malloc(sizeof(LCLine));

              lcl->I    = strdump(I);
        	  lcl->P    = strdump(P);
        	  lcl->Pi   = strdump(Pi);
        	  lcl->KP   = strdump(KP);
        	  lcl->prev = NULL;
        	  lcl->next = NULL;

        	  return lcl;
            }//LCLine_new()
Exemplo n.º 3
0
// Dump out a single object / or all objects reachable from this one.
static void
innerDumpObj
	( FILE *f		// file to dump o
	, int level		// indent level
	, Obj* obj		// root object
	, bool recurse)		// whether to recurse into other objects.
{
	int indent = 2 * level + (level == 0 ? 1 : 3);
	int tag, id, size;

	size	= _objSize   (obj);
	tag	= _getObjTag (obj);
	id	= _getObjId  (obj);

	switch (id & _MaskObjAnchored) {
	 case _ObjFixedThunk :
		fprintf (f, "%*cThunk @ %p (%d bytes)\n", indent, ' ', obj, size);
		fprintf (f, "%*c  , tag   = 0x%06x\n",	  indent, ' ', tag);
		fprintf (f, "%*c  , func  = %p\n",	  indent, ' ', ((Thunk*)obj)->func);
		fprintf (f, "%*c  , arity = %d\n",	  indent, ' ', ((Thunk*)obj)->arity);
		fprintf (f, "%*c  , args  = %d\n",	  indent, ' ', ((Thunk*)obj)->args);

		for (uint32_t k = 0 ; k < ((Thunk*)obj)->args ;  k++) {
			if (recurse)
				innerDumpObj (f, level + 1, ((Thunk*)obj)->a [k], recurse);
			else
				fprintf (f, "%*c  , a [%3d] = %p\n", indent, ' ', k, ((Thunk*)obj)->a [k]);
		}
		fprintf (f, "%*c  }\n", indent, ' ') ;

		break;

	 case _ObjFixedData :
		fprintf (f, "%*cData @ %p (%d bytes) {\n", indent, ' ', obj, size);
		fprintf (f, "%*c  , tag     = 0x%06x\n",   indent, ' ', tag);
		fprintf (f, "%*c  , arity   = %d\n",       indent, ' ', ((Data*)obj)->arity);

		for (uint32_t k = 0 ; k < ((Data*)obj)->arity ;  k++) {
			if (recurse)
				innerDumpObj (f, level + 1, ((Data*)obj)->a [k], recurse) ;
			else
				fprintf (f, "%*c  , a [%3d] = %p\n", indent, ' ', k, ((Data*)obj)->a [k]) ;
		}

		fprintf (f, "%*c  }\n", indent, ' ') ;
		break ;

	 case _ObjFixedDataR :
		fprintf (f, "%*cDataR @ %p (%d bytes) {\n", indent, ' ', obj, size);
		fprintf (f, "%*c  , tag     = 0x%06x\n",    indent, ' ', tag);
		fprintf (f, "%*c  , size    = %d\n",        indent, ' ', ((DataR*)obj)->size);
		fprintf (f, "%*c  , payload = ",            indent, ' ');

		hexdump (f, 	((DataR*)obj)->payload,
				((DataR*)obj)->size - offsetof (DataR, payload));

		fprintf (f, "%*c                  -> ", indent, ' ') ;

		strdump (f, 	((DataR*)obj)->payload,
				((DataR*)obj)->size - offsetof (DataR, payload));

		fprintf (f, "%*c  }\n", indent, ' ') ;
		break ;

	 case _ObjFixedDataM :
		fprintf (f, "%*cDataM @ %p (%d bytes) {\n", indent, ' ', obj, size);
		fprintf (f, "%*c  , tag      = 0x%06x\n",   indent, ' ', tag);
		fprintf (f, "%*c  , size     = %d\n",       indent, ' ', ((DataM*)obj)->size);
		fprintf (f, "%*c  , ptrCount = %d\n",       indent, ' ', ((DataM*)obj)->ptrCount);
		fprintf (f, "%*c  , payload  = ",           indent, ' ');

		hexdump (f,	((DataM*)obj)->payload,
			    	((DataM*)obj)->size - offsetof (DataM, payload));

		fprintf (f, "%*c                  -> ",     indent, ' ');

		strdump (f, 	((DataM*)obj)->payload,
				((DataM*)obj)->size - offsetof (DataM, payload));

		fprintf (f, "%*c  }\n", indent, ' ');
		break;

	 case _ObjFixedSuspIndir :
		fprintf (f, "%*cSuspIndir @ %p (%d bytes) {\n", indent, ' ', obj, size);
		fprintf (f, "%*c  , tag   = 0x%06x\n",          indent, ' ', tag);

		innerDumpObj (f, level + 1, ((SuspIndir*)obj)->obj, recurse);

		fprintf (f, "%*c    arity = %d\n", indent, ' ', ((SuspIndir*)obj)->arity);

		for (uint32_t k = 0; k < ((SuspIndir*)obj)->arity;  k++)
			innerDumpObj (f, level + 1, ((SuspIndir*)obj)->a [k], recurse);

		fprintf (f, "%*c  }\n", indent, ' ') ;

		break ;

	 default :
		fprintf (f, "%*cUnknown @ %p (%d bytes) {\n",   indent, ' ', obj, size);
		fprintf (f, "%*c  , tag = 0x%06x\n",            indent, ' ', tag);
		fprintf (f, "%*c  , id  : 0x%x : ",             indent, ' ', id);

		hexdump (f, (unsigned char *) obj, size);

		fprintf (f, "%*c  }\n", indent, ' ');
	}
}