goto cleanup;
}
- if ((*structure)->name)
+ if ((*structure)->name[0] != 0)
{ /* Has *structure got a name? */
nameLen -= strlen ((*structure)->name);
if (nameLen > 0)
p3 = p3->down;
while (p3)
{
- if ((p3->name) && !(strcmp (p3->name, p2->name)))
+ if (!(strcmp (p3->name, p2->name)))
break;
p3 = p3->right;
}
while (p3)
{
- if ((p3->name) && !(strcmp (p3->name, p2->name)))
+ if (!(strcmp (p3->name, p2->name)))
break;
p3 = p3->right;
}
while (p != NULL)
{
- if (p->name != NULL)
+ if (p->name[0] != 0)
{
_asn1_str_cpy (tmp_name, sizeof (tmp_name), name),
_asn1_str_cpy (name, name_size, p->name);
p = p->right;
_asn1_set_right (p, p2);
- if (p->name == NULL)
+ if (p->name[0] == 0)
_asn1_str_cpy (temp, sizeof (temp), "?1");
else
{
{
if (type_field (p->type) == TYPE_CONSTANT)
{
- if ((p->name) && (!_asn1_strcmp (p->name, value)))
+ if (!_asn1_strcmp (p->name, value))
{
value_temp =
(unsigned char *)
{
if (type_field (p2->type) == TYPE_CONSTANT)
{
- if ((p2->name) && (!_asn1_strcmp (p2->name, p->value)))
+ if (!_asn1_strcmp (p2->name, p->value))
{
default_temp =
(unsigned char *)
{
if (type_field (p2->type) == TYPE_CONSTANT)
{
- if ((p2->name) && (!_asn1_strcmp (p2->name, p->value)))
+ if (!_asn1_strcmp (p2->name, p->value))
{
if (_asn1_convert_integer
(p2->value, value, value_size,
struct node_asn_struct
{
/* public fields: */
- char *name; /* Node name */
+ char name[ASN1_MAX_NAME_SIZE]; /* Node name */
unsigned int type; /* Node type */
unsigned char *value; /* Node value */
int value_len;
{
#endif
-#define ASN1_VERSION "2.14"
+#define ASN1_VERSION "3.0"
typedef int asn1_retCode; /* type returned by libtasn1 functions */
typedef node_asn *ASN1_TYPE;
+
+ /* maximum number of characters of a name */
+ /* inside a file with ASN1 definitons */
+#define ASN1_MAX_NAME_SIZE 128
+
#define ASN1_TYPE_EMPTY NULL
/*****************************************/
/* Fixed constants */
/***********************************/
- /* maximum number of characters of a name */
- /* inside a file with ASN1 definitons */
-#define ASN1_MAX_NAME_SIZE 128
/* maximum number of characters */
/* of a description message */
p = pointer;
n_start = name;
- if (p->name != NULL)
+ if (p->name[0] != 0)
{ /* has *pointer got a name ? */
n_end = strchr (n_start, '.'); /* search the first dot */
if (n_end)
{ /* no "?LAST" */
while (p)
{
- if ((p->name) && (!strcmp (p->name, n)))
+ if (!strcmp (p->name, n))
break;
else
p = p->right;
if (node == NULL)
return node;
- if (node->name)
+ if (name == NULL)
{
- _asn1_free (node->name);
- node->name = NULL;
+ node->name[0] = 0;
+ return node;
}
- if (name == NULL)
- return node;
+ _asn1_str_cpy (node->name, sizeof (node->name), name);
- if (strlen (name))
- {
- node->name = (char *) _asn1_strdup (name);
- if (node->name == NULL)
- return NULL;
- }
- else
- node->name = NULL;
return node;
}
return node;
}
-/******************************************************************/
-/* Function : _asn1_get_right */
-/* Description: returns the element pointed by the RIGHT field of */
-/* a NODE_ASN element. */
-/* Parameters: */
-/* node: NODE_ASN element pointer. */
-/* Return: field RIGHT of NODE. */
-/******************************************************************/
-ASN1_TYPE
-_asn1_get_right (ASN1_TYPE node)
-{
- if (node == NULL)
- return NULL;
- return node->right;
-}
/******************************************************************/
/* Function : _asn1_get_last_right */
}
/******************************************************************/
-/* Function : _asn1_set_down */
-/* Description: sets the field DOWN in a NODE_ASN element. */
-/* Parameters: */
-/* node: element pointer. */
-/* down: pointer to a NODE_ASN element that you want be pointed */
-/* by NODE. */
-/* Return: pointer to *NODE. */
-/******************************************************************/
-ASN1_TYPE
-_asn1_set_down (ASN1_TYPE node, ASN1_TYPE down)
-{
- if (node == NULL)
- return node;
- node->down = down;
- if (down)
- down->left = node;
- return node;
-}
-
-/******************************************************************/
-/* Function : _asn1_get_down */
-/* Description: returns the element pointed by the DOWN field of */
-/* a NODE_ASN element. */
-/* Parameters: */
-/* node: NODE_ASN element pointer. */
-/* Return: field DOWN of NODE. */
-/******************************************************************/
-ASN1_TYPE
-_asn1_get_down (ASN1_TYPE node)
-{
- if (node == NULL)
- return NULL;
- return node->down;
-}
-
-/******************************************************************/
-/* Function : _asn1_get_name */
-/* Description: returns the name of a NODE_ASN element. */
-/* Parameters: */
-/* node: NODE_ASN element pointer. */
-/* Return: a null terminated string. */
-/******************************************************************/
-char *
-_asn1_get_name (ASN1_TYPE node)
-{
- if (node == NULL)
- return NULL;
- return node->name;
-}
-
-/******************************************************************/
-/* Function : _asn1_mod_type */
-/* Description: change the field TYPE of an NODE_ASN element. */
-/* The new value is the old one | (bitwise or) the */
-/* paramener VALUE. */
-/* Parameters: */
-/* node: NODE_ASN element pointer. */
-/* value: the integer value that must be or-ed with the current */
-/* value of field TYPE. */
-/* Return: NODE pointer. */
-/******************************************************************/
-ASN1_TYPE
-_asn1_mod_type (ASN1_TYPE node, unsigned int value)
-{
- if (node == NULL)
- return node;
- node->type |= value;
- return node;
-}
-
-
-/******************************************************************/
/* Function : _asn1_remove_node */
/* Description: gets free the memory allocated for an NODE_ASN */
/* element (not the elements pointed by it). */
if (node == NULL)
return;
- if (node->name != NULL)
- _asn1_free (node->name);
if (node->value != NULL && node->value != node->small_value)
_asn1_free (node->value);
_asn1_free (node);
ASN1_TYPE _asn1_set_right (ASN1_TYPE node, ASN1_TYPE right);
-ASN1_TYPE _asn1_get_right (ASN1_TYPE node);
-
ASN1_TYPE _asn1_get_last_right (ASN1_TYPE node);
-ASN1_TYPE _asn1_set_down (ASN1_TYPE node, ASN1_TYPE down);
-
-char *_asn1_get_name (ASN1_TYPE node);
-
-ASN1_TYPE _asn1_get_down (ASN1_TYPE node);
-
-ASN1_TYPE _asn1_mod_type (ASN1_TYPE node, unsigned int value);
-
void _asn1_remove_node (ASN1_TYPE node);
void _asn1_delete_list (void);
asn1_retCode _asn1_set_default_tag (ASN1_TYPE node);
+/******************************************************************/
+/* Function : _asn1_get_right */
+/* Description: returns the element pointed by the RIGHT field of */
+/* a NODE_ASN element. */
+/* Parameters: */
+/* node: NODE_ASN element pointer. */
+/* Return: field RIGHT of NODE. */
+/******************************************************************/
+inline static ASN1_TYPE
+_asn1_get_right (ASN1_TYPE node)
+{
+ if (node == NULL)
+ return NULL;
+ return node->right;
+}
+
+/******************************************************************/
+/* Function : _asn1_set_down */
+/* Description: sets the field DOWN in a NODE_ASN element. */
+/* Parameters: */
+/* node: element pointer. */
+/* down: pointer to a NODE_ASN element that you want be pointed */
+/* by NODE. */
+/* Return: pointer to *NODE. */
+/******************************************************************/
+inline static ASN1_TYPE
+_asn1_set_down (ASN1_TYPE node, ASN1_TYPE down)
+{
+ if (node == NULL)
+ return node;
+ node->down = down;
+ if (down)
+ down->left = node;
+ return node;
+}
+
+/******************************************************************/
+/* Function : _asn1_get_down */
+/* Description: returns the element pointed by the DOWN field of */
+/* a NODE_ASN element. */
+/* Parameters: */
+/* node: NODE_ASN element pointer. */
+/* Return: field DOWN of NODE. */
+/******************************************************************/
+inline static ASN1_TYPE
+_asn1_get_down (ASN1_TYPE node)
+{
+ if (node == NULL)
+ return NULL;
+ return node->down;
+}
+
+/******************************************************************/
+/* Function : _asn1_get_name */
+/* Description: returns the name of a NODE_ASN element. */
+/* Parameters: */
+/* node: NODE_ASN element pointer. */
+/* Return: a null terminated string. */
+/******************************************************************/
+inline static char *
+_asn1_get_name (ASN1_TYPE node)
+{
+ if (node == NULL)
+ return NULL;
+ return node->name;
+}
+
+/******************************************************************/
+/* Function : _asn1_mod_type */
+/* Description: change the field TYPE of an NODE_ASN element. */
+/* The new value is the old one | (bitwise or) the */
+/* paramener VALUE. */
+/* Parameters: */
+/* node: NODE_ASN element pointer. */
+/* value: the integer value that must be or-ed with the current */
+/* value of field TYPE. */
+/* Return: NODE pointer. */
+/******************************************************************/
+inline static ASN1_TYPE
+_asn1_mod_type (ASN1_TYPE node, unsigned int value)
+{
+ if (node == NULL)
+ return node;
+ node->type |= value;
+ return node;
+}
+
#endif
{
fprintf (file, " { ");
- if (p->name)
+ if (p->name[0] != 0)
fprintf (file, "\"%s\", ", p->name);
else
fprintf (file, "NULL, ");
{
if (move != UP)
{
- if (p_s->name)
+ if (p_s->name[0] != 0)
_asn1_set_name (p_d, p_s->name);
if (p_s->value)
_asn1_set_value (p_d, p_s->value, p_s->value_len);
for (k = 0; k < indent; k++)
fprintf (out, " ");
fprintf (out, "name:");
- if (p->name)
+ if (p->name[0] != 0)
fprintf (out, "%s ", p->name);
else
fprintf (out, "NULL ");
for (k = 0; k < indent; k++)
fprintf (out, " ");
fprintf (out, "name:");
- if (p->name)
+ if (p->name[0] != 0)
fprintf (out, "%s ", p->name);
else
fprintf (out, "NULL ");
while (p)
{
- if ((p->name) && (p->name[0] == '?'))
+ if (p->name[0] == '?')
(*num)++;
p = p->right;
}