This file is indexed.

/usr/include/id3/tag.h is in libid3-3.8.3-dev 3.8.3-15.

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
// -*- C++ -*-
// $Id: tag.h,v 1.63 2003/03/02 13:35:59 t1mpy Exp $

// id3lib: a software library for creating and manipulating id3v1/v2 tags
// Copyright 1999, 2000  Scott Thomas Haug
// Copyright 2002 Thijmen Klok (thijmen@id3lib.org)

// This library is free software; you can redistribute it and/or modify it
// under the terms of the GNU Library General Public License as published by
// the Free Software Foundation; either version 2 of the License, or (at your
// option) any later version.
//
// 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 Library General Public
// License for more details.
//
// You should have received a copy of the GNU Library General Public License
// along with this library; if not, write to the Free Software Foundation,
// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

// The id3lib authors encourage improvements and optimisations to be sent to
// the id3lib coordinator.  Please see the README file for details on where to
// send such submissions.  See the AUTHORS file for a list of people who have
// contributed to id3lib.  See the ChangeLog file for a list of changes to
// id3lib.  These files are distributed with id3lib at
// http://download.sourceforge.net/id3lib/

#ifndef _ID3LIB_TAG_H_
#define _ID3LIB_TAG_H_

#include <id3/id3lib_frame.h>
#include <id3/field.h>
#include <id3/utils.h>//for ID3_PATH_LENGTH

class ID3_Reader;
class ID3_Writer;
class ID3_TagImpl;
class ID3_Tag;

class ID3_CPP_EXPORT ID3_Tag
{
  ID3_TagImpl* _impl;
  char _tmp_filename[ID3_PATH_LENGTH];
public:

  class Iterator
  {
  public:
    virtual ID3_Frame*       GetNext()       = 0;
  };

  class ConstIterator
  {
  public:
    virtual const ID3_Frame* GetNext()       = 0;
  };

public:

  ID3_Tag(const char *name = NULL);
  ID3_Tag(const ID3_Tag &tag);
  virtual ~ID3_Tag();

  void       Clear();
  bool       HasChanged() const;
  size_t     Size() const;

  bool       SetUnsync(bool);
  bool       SetExtendedHeader(bool);
  bool       SetExperimental(bool);

  bool       GetUnsync() const;
  bool       GetExtendedHeader() const;
  bool       GetExperimental() const;

  bool       SetPadding(bool);

  void       AddFrame(const ID3_Frame&);
  void       AddFrame(const ID3_Frame*);
  bool       AttachFrame(ID3_Frame*);
  ID3_Frame* RemoveFrame(const ID3_Frame *);

  size_t     Parse(const uchar*, size_t);
  bool       Parse(ID3_Reader& reader);
  size_t     Render(uchar*, ID3_TagType = ID3TT_ID3V2) const;
  size_t     Render(ID3_Writer&, ID3_TagType = ID3TT_ID3V2) const;

  size_t     Link(const char *fileInfo, flags_t = (flags_t) ID3TT_ALL);
  size_t     Link(ID3_Reader &reader, flags_t = (flags_t) ID3TT_ALL);
  flags_t    Update(flags_t = (flags_t) ID3TT_ALL);
  flags_t    Strip(flags_t = (flags_t) ID3TT_ALL);

  size_t     GetPrependedBytes() const;
  size_t     GetAppendedBytes() const;
  size_t     GetFileSize() const;
  const char* GetFileName() const;

  ID3_Frame* Find(ID3_FrameID) const;
  ID3_Frame* Find(ID3_FrameID, ID3_FieldID, uint32) const;
  ID3_Frame* Find(ID3_FrameID, ID3_FieldID, const char*) const;
  ID3_Frame* Find(ID3_FrameID, ID3_FieldID, const unicode_t*) const;

  size_t     NumFrames() const;

  const Mp3_Headerinfo* GetMp3HeaderInfo() const;

  Iterator*  CreateIterator();
  ConstIterator* CreateIterator() const;

  ID3_Tag&   operator=( const ID3_Tag & );

  bool       HasTagType(ID3_TagType tt) const;
  ID3_V2Spec GetSpec() const;
  bool       SetSpec(ID3_V2Spec);

  static size_t IsV2Tag(const uchar*);
  static size_t IsV2Tag(ID3_Reader&);

  /* Deprecated! */
  void       AddNewFrame(ID3_Frame* f);
  size_t     Link(const char *fileInfo, bool parseID3v1, bool parseLyrics3);
  void       SetCompression(bool);
  void       AddFrames(const ID3_Frame *, size_t);
  bool       HasLyrics() const;
  bool       HasV2Tag()  const;
  bool       HasV1Tag()  const;
  size_t     Parse(const uchar header[ID3_TAGHEADERSIZE], const uchar *buffer);
  //ID3_Frame* operator[](size_t) const;
  //ID3_Frame* GetFrameNum(size_t) const;

  ID3_Tag&   operator<<(const ID3_Frame &);
  ID3_Tag&   operator<<(const ID3_Frame *);
};

// deprecated!
int32 ID3_C_EXPORT ID3_IsTagHeader(const uchar header[ID3_TAGHEADERSIZE]);


#endif /* _ID3LIB_TAG_H_ */