amath  1.8.5
Simple command line calculator
untag.c File Reference
#include "amathc.h"
Include dependency graph for untag.c:

Go to the source code of this file.

Functions

void Untag (char *destination, const char *source, texttag tags[], unsigned int tagcount)
 

Function Documentation

◆ Untag()

void Untag ( char *  destination,
const char *  source,
texttag  tags[],
unsigned int  tagcount 
)

Definition at line 32 of file untag.c.

References texttag::tag, and texttag::text.

Referenced by Language::UntagText().

33 {
34  const char *pos, *tmp, *tag;
35  char* dest;
36  int unsigned i, j, found;
37 
38  pos = source;
39  dest = destination;
40 
41  while (*pos != '\0')
42  {
43  if (*pos != '#')
44  {
45  (*dest++ = *pos++);
46  }
47  else
48  {
49  // Try to replace tag
50  found = 0;
51  for (i = 0; i < tagcount; i++)
52  {
53  tag = tags[i].tag;
54  tmp = pos;
55  j = 0;
56  while (*tmp != '\0' && *tag != '\0' && *tmp == *tag)
57  {
58  tmp++;
59  tag++;
60  j++;
61  }
62 
63  if (j > 1 && *(--tag) == '#')
64  {
65  // Tag found. Now replace.
66  tag = tags[i].text;
67  while ((*dest++ = *tag++));
68  dest--;
69  pos = tmp;
70  found = 1;
71  break;
72  }
73  }
74 
75  if (!found)
76  {
77  (*dest++ = *pos++);
78  }
79  }
80  }
81  *dest = '\0';
82 }
const char * text
Definition: amathc.h:48
const char * tag
Definition: amathc.h:47
Here is the caller graph for this function: