Keep track of the Tag element in addition to the Tags element.
[libmkv.git] / src / tags.c
blob28bd6bbec63457432d1d737a620ff2437df08923
1 /*****************************************************************************
2 * tags.c:
3 *****************************************************************************
4 * Copyright (C) 2007 libmkv
6 * Authors: John A. Stebbins
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
21 *****************************************************************************/
22 #include "config.h"
23 #include "libmkv.h"
24 #include "matroska.h"
26 int mk_createStringTag(mk_Writer * w, char *tag_id, char *value)
28 mk_Context *simple;
30 if (w->tags == NULL) {
31 /* Tags */
32 if ((w->tags = mk_createContext(w, w->root, MATROSKA_ID_TAGS)) == NULL)
33 return -1;
34 /* Tag */
35 if ((w->tag = mk_createContext(w, w->tags, MATROSKA_ID_TAG)) == NULL)
36 return -1;
38 /* SimpleTag */
39 if ((simple = mk_createContext(w, w->tag, MATROSKA_ID_SIMPLETAG)) == NULL)
40 return -1;
42 CHECK(mk_writeStr(simple, MATROSKA_ID_TAGNAME, tag_id)); /* TagName */
43 CHECK(mk_writeStr(simple, MATROSKA_ID_TAGSTRING, value)); /* TagString */
44 CHECK(mk_closeContext(simple, 0));
46 return 0;
49 int mk_writeTags(mk_Writer * w)
51 if ((w->tags == NULL) || (w->tag == NULL))
52 return -1;
53 CHECK(mk_closeContext(w->tag, 0));
54 CHECK(mk_closeContext(w->tags, 0));
56 return 0;