", f);
+
+ for (;;) {
+
+ if (*c == '|' || !(*c)) {
+ if (i % 2 == 0) {
+ clearstr(metaimg);
+ sprintf(imgcountbuf, "%d", ++imgcount);
+ scat(metaimg, "img");
+ scat(metaimg, imgcountbuf);
+ scat(metaimg, "|");
+ scat(metaimg, img);
+ scat(metaimg, "|");
+ } else {
+ scat(metaimg, alt);
+
+ fpimg(f, metaimg);
+
+ clearstr(imgcountbuf);
+ clearstr(img);
+ clearstr(alt);
+ }
+
+ if (!(*c)) {
+ if (i % 2 == 0) {
+ return error("Needs even number of args", s);
+ } else {
+ break;
+ }
+ }
+
+ i++;
+ c++;
+ continue;
+ }
+ if (i % 2 == 0) {
+ ccat(img, *c++);
+ } else {
+ ccat(alt, *c++);
+ }
+ }
+
+ fputs("
", f);
+
+ fppara(f, l, desc);
+ fprintf(
+ f,
+ "
",
+ paylink);
+ fputs("
", f);
+ return 1;
+}
+
int fptemplate(FILE* f, Lexicon* l, char* s) {
int target = 0;
switch (s[0]) {
@@ -594,6 +724,10 @@ int fptemplate(FILE* f, Lexicon* l, char* s) {
return fpsans(f, l, s + 1);
case ')':
return fpserif(f, l, s + 1);
+ case '%':
+ return fppiclisting(f, l, s + 1);
+ case '^':
+ return fpshop(f, l, s + 1);
}
if (s[0]) {
target = findf(l, s);