This file is indexed.

/usr/include/taglib/modtag.h is in libtag1-dev 1.9.1-2.4ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
/***************************************************************************
    copyright           : (C) 2011 by Mathias Panzenböck
    email               : grosser.meister.morti@gmx.net
 ***************************************************************************/

/***************************************************************************
 *   This library is free software; you can redistribute it and/or modify  *
 *   it  under the terms of the GNU Lesser General Public License version  *
 *   2.1 as published by the Free Software Foundation.                     *
 *                                                                         *
 *   This library is distributed in the hope that it will be useful, but   *
 *   WITHOUT ANY WARRANTY; without even the implied warranty of            *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
 *   Lesser General Public License for more details.                       *
 *                                                                         *
 *   You should have received a copy of the GNU Lesser General Public      *
 *   License along with this library; if not, write to the Free Software   *
 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,            *
 *   MA  02110-1301  USA                                                   *
 ***************************************************************************/

#ifndef TAGLIB_MODTAG_H
#define TAGLIB_MODTAG_H

#include "tag.h"

namespace TagLib {

  namespace Mod {

    /*!
     * Tags for module files (Mod, S3M, IT, XM).
     *
     * Note that only the \a title is supported as such by most
     * module file formats.  Except for XM files the \a trackerName
     * is derived from the file format or the flavour of the file
     * format.  For XM files it is stored in the file.
     *
     * The \a comment tag is not strictly supported by module files,
     * but it is common practice to abuse instrument/sample/pattern
     * names as multiline comments.  TagLib does so as well.
     */
    class TAGLIB_EXPORT Tag : public TagLib::Tag
    {
    public:
      Tag();
      virtual ~Tag();

      /*!
       * Returns the track name; if no track name is present in the tag
       * String::null will be returned.
       */
      String title() const;

      /*!
       * Not supported by module files.  Therefore always returns String::null.
       */
      String artist() const;

      /*!
       * Not supported by module files.  Therefore always returns String::null.
       */
      String album() const;

      /*!
       * Returns the track comment derived from the instrument/sample/pattern
       * names; if no comment is present in the tag String::null will be
       * returned.
       */
      String comment() const;

      /*!
       * Not supported by module files.  Therefore always returns String::null.
       */
      String genre() const;

      /*!
       * Not supported by module files.  Therefore always returns 0.
       */
      uint year() const;

      /*!
       * Not supported by module files.  Therefore always returns 0.
       */
      uint track() const;

      /*!
       * Returns the name of the tracker used to create/edit the module file.
       * Only XM files store this tag to the file as such, for other formats
       * (Mod, S3M, IT) this is derived from the file type or the flavour of
       * the file type.  Therefore only XM files might have an empty
       * (String::null) tracker name.
       */
      String trackerName() const;

      /*!
       * Sets the title to \a title.  If \a title is String::null then this
       * value will be cleared.
       *
       * The length limits per file type are (1 characetr = 1 byte):
       * Mod 20 characters, S3M 27 characters, IT 25 characters and XM 20
       * characters.
       */
      void setTitle(const String &title);

      /*!
       * Not supported by module files and therefore ignored.
       */
      void setArtist(const String &artist);

      /*!
       * Not supported by module files and therefore ignored.
       */
      void setAlbum(const String &album);

      /*!
       * Sets the comment to \a comment.  If \a comment is String::null then
       * this value will be cleared.
       *
       * Note that module file formats don't actually support a comment tag.
       * Instead the names of instruments/patterns/samples are abused as
       * a multiline comment. Because of this the number of lines in a
       * module file is fixed to the number of instruments/patterns/samples.
       *
       * Also note that the instrument/pattern/sample name length is limited
       * an thus the line length in comments are limited. Too big comments
       * will be truncated.
       *
       * The line length limits per file type are (1 characetr = 1 byte):
       * Mod 22 characters, S3M 27 characters, IT 25 characters and XM 22
       * characters.
       */
      void setComment(const String &comment);

      /*!
       * Not supported by module files and therefore ignored.
       */
      void setGenre(const String &genre);

      /*!
       * Not supported by module files and therefore ignored.
       */
      void setYear(uint year);

      /*!
       * Not supported by module files and therefore ignored.
       */
      void setTrack(uint track);

      /*!
       * Sets the tracker name to \a trackerName.  If \a trackerName is
       * String::null then this value will be cleared.
       *
       * Note that only XM files support this tag.  Setting the
       * tracker name for other module file formats will be ignored.
       *
       * The length of this tag is limited to 20 characters (1 character
       * = 1 byte).
       */
      void setTrackerName(const String &trackerName);

      /*!
       * Implements the unified property interface -- export function.
       * Since the module tag is very limited, the exported map is as well.
       */
      PropertyMap properties() const;

      /*!
       * Implements the unified property interface -- import function.
       * Because of the limitations of the module file tag, any tags besides
       * COMMENT, TITLE and, if it is an XM file, TRACKERNAME, will be
       * returened. Additionally, if the map contains tags with multiple values,
       * all but the first will be contained in the returned map of unsupported
       * properties.
       */
      PropertyMap setProperties(const PropertyMap &);

    private:
      Tag(const Tag &);
      Tag &operator=(const Tag &);

      class TagPrivate;
      TagPrivate *d;
    };

  }

}

#endif