pax_global_header 0000666 0000000 0000000 00000000064 14367552500 0014521 g ustar 00root root 0000000 0000000 52 comment=93fe97f7d79054867b5b6331c53ee41bd340cfad
mediascanner2-0.115/ 0000775 0000000 0000000 00000000000 14367552500 0014242 5 ustar 00root root 0000000 0000000 mediascanner2-0.115/.gitignore 0000664 0000000 0000000 00000000361 14367552500 0016232 0 ustar 00root root 0000000 0000000 build
.project
.cproject
.pydevproject
.settings
buildopt
buildcoverage
buildclang
/obj-*
debian/files
debian/libmediascanner-2.0-0
debian/libmediascanner-dev
debian/mediascanner
debian/tmp
debian/*.debhelper
debian/*.log
debian/*.substvars
mediascanner2-0.115/AUTHORS 0000664 0000000 0000000 00000000661 14367552500 0015315 0 ustar 00root root 0000000 0000000 Alexander
Alex Tu
Alfonso Sanchez-Beato
Alfred Neumayer
Brian Douglass
Dalton Durst
Dan Chapman
Dimitri John Ledkov
Florian Leeber
Guido Berhoerster
James Henstridge
Jamie Strandboge
Jussi Pakkanen
Ćukasz 'sil2100' Zemczak
Marius Gripsgard
Matthias Klose
Michael Terry
Michal Hruby
Mike Gabriel
Pete Woods
Ratchanan Srirattanamet
Ricardo Salveti De Araujo
Robert Bruce Park
Rodney Dawes
Sergey Chupligin
Timo Jyrinki
You-Sheng Yang
mediascanner2-0.115/CMakeLists.txt 0000664 0000000 0000000 00000005220 14367552500 0017001 0 ustar 00root root 0000000 0000000 cmake_minimum_required(VERSION 3.6.0)
project(mediascanner2 VERSION 0.115 LANGUAGES CXX C)
set(MEDIASCANNER_VERSION "${PROJECT_VERSION}")
set(MEDIASCANNER_SOVERSION "4")
set(MEDIASCANNER_LIBVERSION "${MEDIASCANNER_SOVERSION}.${MEDIASCANNER_VERSION}")
if(PROJECT_BINARY_DIR STREQUAL PROJECT_SOURCE_DIR)
message(FATAL_ERROR "In-tree build attempt detected, aborting. Set your build dir outside your source dir, delete CMakeCache.txt from source root and try again.")
endif()
option(FULL_WARNINGS "All possible compiler warnings." OFF)
option(ENABLE_TESTS "Enable tests" ON)
include(FindPkgConfig)
find_package(PkgConfig REQUIRED)
pkg_check_modules(MEDIASCANNER_DEPS REQUIRED
gio-2.0
gio-unix-2.0
sqlite3>=3.8.5
)
pkg_check_modules(GST gstreamer-1.0 gstreamer-pbutils-1.0 REQUIRED)
pkg_check_modules(GLIB glib-2.0 REQUIRED)
pkg_check_modules(PIXBUF gdk-pixbuf-2.0 REQUIRED)
pkg_check_modules(EXIF libexif REQUIRED)
pkg_check_modules(TAGLIB taglib REQUIRED)
pkg_check_modules(DBUSCPP dbus-cpp REQUIRED IMPORTED_TARGET)
pkg_check_modules(APPARMOR libapparmor REQUIRED)
pkg_check_modules(UDISKS udisks2 REQUIRED)
find_package(Threads REQUIRED)
find_package(Qt5 "5.12.0" COMPONENTS Core Test QuickTest Qml Concurrent DBus REQUIRED)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -pedantic -Wextra -std=c99")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wextra")
set(CMAKE_CXX_STANDARD 17)
if(${FULL_WARNINGS})
# C does not have any more warning flags.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Weffc++")
endif()
find_package(CoverageReport)
include(GNUInstallDirs)
set(LIBDIR $CMAKE_INSTALL_LIBDIR)
add_subdirectory(src)
if(ENABLE_TESTS)
message("Tests enabled")
enable_testing()
add_subdirectory(test)
else()
message(WARNING "Tests disabled")
endif()
# Install pkg-config file
configure_file(mediascanner-2.0.pc.in mediascanner-2.0.pc)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mediascanner-2.0.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
# Install SystemD user unit
configure_file(mediascanner-2.0.service.in mediascanner-2.0.service)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/mediascanner-2.0.service
DESTINATION lib/systemd/user
)
enable_coverage_report(
TARGETS
mediascanner
extractor-client
extractor-backend
mediascanner-extractor
scannerstuff
scannerdaemon
ms-dbus
mediascanner-dbus
mediascanner-qml
query
mountwatcher
FILTER
${CMAKE_SOURCE_DIR}/tests/*
${CMAKE_BINARY_DIR}/*
TESTS
basic
test_mediastore
test_metadataextractor
test_extractorbackend
test_sqliteutils
test_mfbuilder
test_subtreewatcher
test_volumemanager
test_dbus
test_qml
test_util
)
mediascanner2-0.115/COPYING.GPL 0000664 0000000 0000000 00000104513 14367552500 0015722 0 ustar 00root root 0000000 0000000 GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Copyright (C)
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
.
mediascanner2-0.115/COPYING.LGPL 0000664 0000000 0000000 00000016743 14367552500 0016045 0 ustar 00root root 0000000 0000000 GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
mediascanner2-0.115/ChangeLog 0000664 0000000 0000000 00000264427 14367552500 0016033 0 ustar 00root root 0000000 0000000 2023-02-04 Mike Gabriel
* Release 0.115 (HEAD -> main, tag: 0.115)
* Merge branch 'fix_6' into 'main' (f12ed42)
2023-02-01 Sergey Chupligin
* qml: Fixup QML import. Fixes #6 (11b7800)
2023-02-01 Guido Berhoerster
* Merge branch 'personal/sunweaver/use-libexecdir' into 'main'
(6abed00)
2023-02-01 Mike Gabriel
* debian/mediascanner2.0.install: Adjust paths for files now
installed into LIBEXECDIR. (952525f)
* debian/: Adopt to LIBEXECDIR path change in
previous commit. (759a772)
* Place (helper) executables into LIBEXECDIR. (51da3cc)
2023-01-29 Mike Gabriel
* Merge branch 'fix_5' into 'main' (0ea75b2)
2023-01-27 Sergey Chupligin
* Fixup libexif headers path. Fix #5 (a255c3a)
2023-01-07 Florian Leeber
* Merge branch 'main' into 'main' (cbc000d)
2023-01-07 Alexander
* Fix bug causing looping on hidden files (f81495e)
2022-12-12 Marius Gripsgard
* Merge branch 'personal/fredldotme/mediascanner+aa' into 'main'
(9d17916)
2022-12-11 Alfred Neumayer
* debian: Fix Halium >= 9.0 AppArmor rules (210aa01)
2022-12-02 Mike Gabriel
* Merge branch 'personal/gberh/fix-startup' into 'main' (2d5cfd4)
2022-12-02 Guido Berhoerster
* Start mediascanner as part of the graphical session (83dd45f)
* Add changelog entry (00d2053)
* Update packaging metadata (5015361)
* Update to dh version 12 (2d2fa45)
2022-08-17 Ratchanan Srirattanamet
* Merge branch 'systemd-migration' into 'main' (af0dd49)
2022-08-16 Guido Berhoerster
* Remove obsolete upstart job and override file (7bbdf92)
2022-08-01 Marius Gripsgard
* Merge branch 'ubports/focal_-_build' into 'main' (b4c6f8b)
2022-07-27 Ratchanan Srirattanamet
* .gitignore: update schemantics compared to .bzrignore (a1bd288)
2022-07-26 Ratchanan Srirattanamet
* daemon/Scanner.cc: remove additional logging (d4fcc66)
* daemon/Scanner.cc: fix accidental `=` -> `==` (67daa7b)
2021-06-10 Rodney Dawes
* Fix sizeof call to avoid crashing in tests sometimes. (fbc9eb8)
2021-06-08 Rodney Dawes
* Migrate directory reading code to std::filesystetm to fix warnings.
(94bf5d4)
* Remove the Ubuntu namespacing of the QML module. (fbb6a5c)
* Fix strftime format warning. (294da58)
* Build with C++17 for std::filesystem::remove_all to fix build.
(babbf3c)
* Remove superfluous std::move to fix build. (98dc174)
* Migrate bzrignore to gitignore (ffb7982)
2021-09-08 Florian Leeber
* Maintainer: Move Jenkinsfile (ab93758)
2021-02-28 Alfred Neumayer
* Update Jenkinsfile (70335d9)
* apparmor: Allow media_codecs to be loaded from the vendor partition
(8d0ff7a)
2020-10-08 Marius Gripsgard
* General build and code cleanups (#4) (e877877)
2019-10-31 Marius Gripsgard
* Merge pull request #3 from ubports/xenial_-_arm64 (70d315a)
2019-10-29 Marius Gripsgard
* Fix property access with never libhybris patch (f0438b2)
2019-09-13 Brian Douglass
* Fixes grouping albums by album artist rather than just album in the
Music app (#1) (4107aa1)
2019-08-22 Florian Leeber
* Merge pull request #2 from ubports/xenial_-_mediascanner-build
(ebe41bf)
2019-08-21 Dalton Durst
* Remove soversion 3 files (0afbdef)
* Fix mediascanner tests (ceaa3dc)
* Remove Bileto pre-release hook (acf6259)
2018-03-11 Marius Gripsgard
* Also allow start if XDG_SESSION_DESKTOP is ubuntu-touch (e398ecc)
2018-01-12 Dan Chapman
* Imported to UBports (6a24dce)
2017-03-22 Bileto Bot
* Releasing 0.112+17.04.20170322-0ubuntu1 (867c4ab)
2017-03-22 Michael Terry
* Only run mediascanner in unity8. (e940cae)
2017-03-21 Michael Terry
* Only start mediascanner in unity8 (432ef7e)
2017-03-02 Bileto Bot
* Releasing 0.112+17.04.20170302-0ubuntu1 (6bd7737)
2017-03-02 Pete Woods
* Add SystemD session files (3018187)
* Compatibility with unversioned cmake-extras modules (LP: #1563573)
(c4511c6)
* SystemD doesn't like the $SNAP part, also tell it about our dbus
info (5f9552e)
2017-02-22 Pete Woods
* Add SystemD session files (9548556)
2016-12-07 Pete Woods
* Compatibility with unversioned cmake-extras modules (a71417b)
2016-12-01 Bileto Bot
* Releasing 0.112+17.04.20161201-0ubuntu1 (498a33a)
2016-12-01 James Henstridge
* Correctly detect embedded art in Vorbis files with TagLib 1.11.
(b26c328)
2016-12-01 Michael Terry
* Handle running inside of a snap by respecting the $SNAP variable.
(LP: #1629009) (111c225)
2016-12-01 James Henstridge
* Taglib 1.11 removes COVERART/METADATA_BLOCK_PICTURE from the fields
list of XiphComment, so also check for a non-empty
pictureList() when deciding whether a file contains a
embedded art. (225ab61)
* Add a test for detection of embedded art in vorbis files. (a360122)
2016-11-10 Michael Terry
* Support $SNAP (6c1cc07)
2016-09-09 Bileto Bot
* Releasing 0.112+16.10.20160909-0ubuntu1 (110904b)
2016-09-09 James Henstridge
* Replace deprecated use of GetConnectionAppArmorSecurityContext
method with GetConnectionCredentials. (LP: #1489489)
(7441d62)
* Disable optimisation when compiling dbus-codec.cc to avoid gcc 6
compilation bug. (LP: #1621002) (197ce52)
2016-09-09 You-Sheng Yang
* Update mediascanner-extractor apparmor profile to cover Android
library locations on 64-bit systems. (f279d0a)
2016-09-09 James Henstridge
* Add apparmor-easyprof hardware directories to package so AppArmor
profile can compile when apparmor-easyprof-ubuntu isn't
installed. (LP: #1443693) (05461e5)
2016-09-09 Bileto Bot
* When multiple volumes are mounted in quick succession, scan them
serially to avoid reentrancy problems in the initial scan.
(LP: #1489656) (4a68ba3)
2016-09-09 James Henstridge
* Switch over to GetConnectionCredentials(). (57e184a)
* Ignore test results on powerpc. (bbbc550)
2016-09-08 James Henstridge
* Disable optimisation when compiling dbus-codec.cc to avoid gcc 6
bug. (9a04fb1)
2016-08-31 James Henstridge
* Ensure the usr/share/apparmor/hardware/*.d directories that
apparmor-easyprof-ubuntu usually exists are created when
we're installed. (c2a31c1)
* Ensure we send out an invalidate signal after processing all queued
volumes. (ca4372b)
* Increment package version number. (b43951b)
* Add tests for VolumeManager. (dac0ad1)
2016-08-30 James Henstridge
* More cleanup. (f6600b6)
* Move the event out of the queue. (04880e9)
* Actually manage a volume mount events as a queue. (d6bc2bf)
* Switch public API to methods for queuing add/remove of volumes.
Currently just adds/removes volumes synchronously.
(c32b714)
* Split volume management out from ScannerDaemon class into its own
class. (e776880)
* Move InvalidationSender to mediascanner namespace. (ef4a86e)
2016-08-23 You-Sheng Yang
* add Android lib64 path for 64-bit architectures. (989fb9e)
2016-05-26 CI Train Bot
* Releasing 0.111+16.10.20160526-0ubuntu1 (128c50e)
2016-05-26 Robert Bruce Park
* Use new bileto_pre_release_hook. Approved by: Robert Bruce Park,
James Henstridge (55d326b)
2016-05-26 Alex Tu
* apparmor: extend read permissions to cover media_codecs*.xml to
support Turbo. Approved by: Jim Hodapp, Alfonso
Sanchez-Beato, James Henstridge (c722ef2)
2016-05-03 Alex Tu
* extend the read permission to media_codecs*.xml (29ca208)
2016-03-21 Robert Bruce Park
* Use new bileto_pre_release_hook. (cf56fc7)
2016-03-17 CI Train Bot
* Releasing 0.111+16.04.20160317-0ubuntu1 (e3b4f8b)
2016-03-17 James Henstridge
* If a file is unscannable, insert a fallback MediaFile into the
index immediately, rather than relying on it being added
by the broken_files logic on next startup. Approved by:
Michi Henning (064ce2e)
* Also catch runtime errors from extractor during initial scan.
(e0256db)
2016-03-16 James Henstridge
* Add a test to ensure SubtreeWatcher inserts fallback results
promptly. (adac192)
* Rather than using fixed sleeps, sleep until an invalidation signal
is received. (9d235bd)
* Update InvalidationSender so we can run it in a zero delay mode for
testing. (e139707)
* Insert fallback entries in index for unscannable files immediately.
(d22eb38)
2016-02-25 CI Train Bot
* Releasing 0.111+16.04.20160225-0ubuntu1 (60afc22)
2016-02-25 James Henstridge
* Don't emit the InvalidateResults signal if a file was opened for
writing and then closed, but not actually modified
Fixes:
#1542175 Approved by: Michi Henning (d3b4d65)
* Favour the EXIF DateTimeOriginal tag over DateTime when extracting
metadata from photos.
Fixes: #1468585 Approved by: Michi
Henning (6defd71)
* Use taglib to extract metadata from Vorbis, Opus, Flac, MP3 and MP4
audio files. Other formats will fall back to the existing
GStreamer code path.
Fixes: #1536832 Approved by: Michi
Henning (ecf7fd6)
* Add an API for batching multiple MediaStore updates into a single
transaction. Use this new API during the initial
directory scan during start up. Approved by: Michi Henning
(665c333)
2016-02-24 James Henstridge
* For FLAC files, set hasThumbnail to true if pictureList() is not
empty. (c1eb258)
* Protect against GValues holding NULL strings. (43b953c)
* Add isValid() checks to taglib extractor code paths. (563c2c2)
2016-02-23 James Henstridge
* Add a test that shows we pick the DateTimeOriginal date from
krillin.jpg, where DateTime has been offset by an hour.
(60ee97a)
* Add a test image taken from a krillin, demonstrating date issues
(image scaled down but EXIF metadata kept intact).
(b71a332)
* Update shlibs file for gcc5 builds. (8f7656e)
* Prefer the DateTimeOriginal EXIF tag when processing dates of
photos. (3574dca)
* Update symbols file. (19d32c6)
2016-02-22 James Henstridge
* Bump version number. (f84f0f7)
* Expand test to show multiple transactions using a single
MediaStoreTransaction object. (54f9925)
* Batch updates in ScannerDaemon::readFiles() to the same rate we
send out the invalidation notifications. (23a4837)
* Add a helper class to manage data store transactions. (98c33c0)
2016-02-17 James Henstridge
* Add a hacking file that notes the need to install the qt5-default
package. (37d3872)
2016-02-16 James Henstridge
* Add missing break statement. (648839e)
* Add some file format specific tests to test_extractorbackend.cc
(9b45f28)
* Fix up date parsing for MP3 and MP4, to ensure we get the month and
day. (ea3e229)
2016-02-12 James Henstridge
* build-depend on libtag1-dev. (95de0a7)
* Add a test to compre GStreamer and Taglib based extraction of a
vorbis file. (c93dc59)
2016-02-11 James Henstridge
* Add Taglib based extraction for Ogg, Flac, MP3, and MP4 files.
(2ceb8fc)
2016-02-10 James Henstridge
* Fix up test set up. (560bbab)
2016-02-09 James Henstridge
* Add a test to show that the invalidation count signal is not
emitted when a file is opened for writing but not actually
changed. (c3c8e18)
* Don't notify about changes when the file etag does not change.
(786b4a7)
2016-02-05 James Henstridge
* Move GStreamer extraction code out to a separate helper class.
(b34b137)
* Split EXIF image extraction code into helper class. (a6a3e42)
2015-12-16 CI Train Bot
* Releasing 0.110+16.04.20151216-0ubuntu1 (af3c69d)
2015-12-16 James Henstridge
* If the mediascanner index can not be opened, catch the exception in
the QML plugin and act as if the database is empty. A
warning is printed via Qt's logging framework. This
prevents QML apps using mediascanner from terminating if
there is a problem opening the media index.
Fixes:
#1514517 Approved by: Michi Henning, PS Jenkins bot
(881b6d2)
* Fix up handling of directory renames, so old contents is correctly
removed from the index and inotify watches for
subdirectories are cleaned up.
Fixes: #1460411 Approved
by: PS Jenkins bot (15db8b9)
* Bump version number and update symbols file. (31155b9)
* Also remove watches for subdirectories in removeDir(). (9f0cb8d)
* Use a private bus connection in basic.cc test, and remove data on
unmount. (ba1d5c6)
* Add a method to remove all files in a particular subtree. (5b24f9c)
2015-12-15 James Henstridge
* Add a test for the issue described in the bug report. (98d466b)
* Disable some warnings for dbus-generated.c. (f9f6e4d)
2015-12-11 James Henstridge
* Add tests for the missing database case. (390bc1b)
2015-12-10 James Henstridge
* If mediascanner database is missing, allow MediaStoreWrapper
construction to complete, but act as if the database is
empty. (0baac7f)
2015-11-24 CI Train Bot
* Releasing 0.109+16.04.20151124.1-0ubuntu1 (30aae2c)
2015-11-24 James Henstridge
* Disable MountWatcher's callback during destruction so we don't call
back into a partially destroyed class.
Fixes: #1492393
Approved by: PS Jenkins bot, Michi Henning (ff4907e)
* If a folder contains an image file named
{cover,album,albumart,.folder,folder}.{jpeg,jpg,png} use
it as album art for songs in preference to online art if
the songs do not have embedded art.
Fixes: #1372000
Approved by: PS Jenkins bot, Michi Henning (dae96dd)
2015-11-23 James Henstridge
* Clear the MountWatcher callback in the destructor so we don't send
out notifications during shutdown. (2da7f64)
* Bump version number to account for API additions. (ee5f8d9)
* Add folder artwork support to Album class. (0f11e83)
* Add Album::getHasThumbnail() for use by dbus code, and make
MediaStore pass in has_thumbnail to Album. (5882868)
* Add new constructor for album, explicitly passing the has_thumbnail
boolean. (1c7cbaa)
2015-11-20 James Henstridge
* Remove unneeded #define. (d2bba85)
* Add a test that will overflow the folder art cache. (e09f2c8)
* Add back support for case insensitive matching. (87d180e)
* Add tests for art precedence, and case insensitive cover art.
(1582083)
2015-11-19 James Henstridge
* Plug folder art cache into MediaFile::getArtUri(). (7013b15)
* Add folder art cache class. (960dd47)
2015-11-10 James Henstridge
* Merge Jussi's standalone-art-uri branch. (f9ebe60)
2015-11-09 CI Train Bot
* Releasing 0.108+16.04.20151109-0ubuntu1 (df32473)
2015-11-09 James Henstridge
* Move the metadata extractor to a separate process to isolate bugs
in media codecs.
Fixes: #1508142 Approved by: PS Jenkins
bot (e5ab1f4)
2015-11-08 James Henstridge
* Add code to crash the metadata extractor after a certain number of
extractions so we can verify that it is correctly
restarted. (c2a1fb5)
2015-11-07 James Henstridge
* Delay starting the test bus daemon, and use private connections to
the session bus to ensure we aren't reusing connections
between test cases. (05d94d7)
2015-11-04 James Henstridge
* Recreate the GDBusProxy when we get the no reply error: the old
proxy will likely be bound to the old instance's unique
name. (16d3664)
2015-11-03 James Henstridge
* Add attach_disconnected flag to extractor's apparmor profile so it
can access /dev/socket/property_service. (2266292)
2015-11-02 James Henstridge
* Fix compile error. (87f87b9)
* Merge from trunk (1b49993)
2015-11-02 CI Train Bot
* Releasing 0.108+16.04.20151102-0ubuntu1 (4a85c35)
2015-11-02 James Henstridge
* Fix the metadata extractor so that it correctly extracts the date
and presence of cover art from MPEG 4 audio files.
Fixes:
#1492407 Approved by: PS Jenkins bot (4d586bf)
* Remove the id column from media_attic so that we don't get
conflicts when copying data between media and media_attic.
Fixes: #1501990 Approved by: Michi Henning (9e7f44a)
* Update packaging to rename qtdeclarative5-ubuntu-mediascanner0.1
package to qml-module-*, and fix a few other problems
pointed out by Lintian.
Fixes: #1342031 Approved by: Michi
Henning, PS Jenkins bot (5939ac9)
* Make the new qml-module-ubuntu-mediascanner0.1 package
break/replace old versions of the equivalent
qtdeclarative5-... module. (2869975)
2015-10-23 James Henstridge
* Update change log. (f711e1c)
2015-10-22 James Henstridge
* Move daemon back to /usr/bin so the AppArmor profile is correctly
applied again. We can't easily change the AppArmor
profile name because it is encoded into the easyprof
profiles of other apps :( (b59df7c)
* Fix up QML tests to pass again. (e1e2ccc)
* Move playlist blacklisting code to the right location. (a10948f)
* Update D-Bus API to handle extra fields on DetectedFile and
MediaFile. (cbeae46)
* Merge from trunk (7d662a1)
2015-10-09 James Henstridge
* Remove debug printfs. (430d41d)
2015-10-08 James Henstridge
* Regenerate control file. (2991213)
* Move the mediascanner-service-2.0 executable out of /usr/bin, since
it is not intended to be executed directly. (cad6948)
* Don't depend on qt5-default to avoid build-depends-on-metapackage
Lintian warning: instead set QT_SELECT environment
variable. (754caab)
* Update standards version. (92a2929)
* Add short license name (public-domain) for Mozilla FTS code.
(7657250)
* Rename QML plugin package to qml-module-* and add transitional
package for upgrades. (dfdb8fb)
* Tell cmake not to add a soname to the QML plugin. (1705d78)
2015-10-07 James Henstridge
* Add test for mpeg4/m4a metadata extraction, and fix extraction
logic to handle its cover art (exposed as
GST_TAG_PREVIEW_IMAGE rather than GST_TAG_IMAGE) and the
date (exposed as GST_TAG_DATE rather than
GST_TAG_DATE_TIME). (12f3873)
* Add a test MPEG4 audio file with cover art. (4650db6)
* Remove the id column from media_attic so that we don't get
conflicts when copying data between media and media_attic.
(f658078)
2015-09-22 CI Train Bot
* Releasing 0.107+15.10.20150922.1-0ubuntu1 (851a5c1)
2015-09-22 James Henstridge
* Use a single source tree to build the wily and vivid packages,
picking an appropriate soversion for each. (802f921)
* Fix typo. (17ad7c3)
* Add lsb-release to build-depends. (219d7c6)
2015-09-21 James Henstridge
* Actually edit the right version of control.in (105ba89)
* Revert libdbus-cpp-dev dependency to the version available in
vivid: we don't rely on 5.0 at an API level. (d54e5ff)
* Copy symbols file .so.3 symbols file from vivid branch. (fcf27a1)
* Bump package version numbrer to 0.107. (98485b6)
* Adapt the vivid/wily single-tree build infrastructure from
unity-scopes-api. (a9a9f86)
2015-09-17 CI Train Bot
* Releasing 0.106+15.10.20150917-0ubuntu1 (36e374d)
2015-09-17 James Henstridge
* Add a hasMedia() method to MediaStore, which returns true if there
is any media of the given type. Approved by: Pawel
Stolowski (37d4cf4)
* Record the modification time of files in the media index, and allow
sorting results of query() and queryAlbums() by
modification time. Approved by: Pawel Stolowski (d2e21ae)
* Merge from track-mtime (b828afc)
* Fix up symbols file for abi tags. (cf30e48)
* Merge from track-mtime (c7fa85c)
* Merge from trunk (28b5ef0)
2015-09-17 Matthias Klose
* Update symbols file for GCC 5.; Tighten build dependency on
libdbus-cpp-dev. (3a36951)
2015-08-07 James Henstridge
* Merge from track-mtime (2b4f009)
* Merge from lp:mediascanner2 (dcf5ed6)
2015-07-21 CI Train Bot
* Releasing 0.105+15.10.20150721-0ubuntu1 (428e08b)
2015-07-21 James Henstridge
* Remove the hard dependency on g++-4.9.
Fixes: #1452332 Approved by:
Pawel Stolowski (de3d62d)
2015-07-17 James Henstridge
* Remove hard dependency on g++-4.9 (67d7a0c)
2015-07-14 James Henstridge
* One of the pkg_check_modules() invocations was stomping on the
MEDIASCANNER_VERSION variable. Change the variable prefix
to avoid the conflict. (7d1970d)
* Rename haveMedia to hasMedia. (87c0a09)
2015-07-13 James Henstridge
* Update symbols. (777f952)
* Add haveMedia() method to MediaStore. (e78fa65)
* Update version in pkg-config file. (fc0153f)
2015-07-07 James Henstridge
* Update Debian changelog. (23cae4b)
* Update test to use same type as rest of code. (bcbd707)
* Add new symbols and sort. (58f62ac)
* Expose modification time in QML wrapper. (a7b7c73)
* Allow sorting queryAlbums() results by modification date (e620e4e)
* Allow sorting query() results by modification date. (1fdadd8)
* Update D-Bus code to pass through mtime. (2d82499)
* Make extractor record modification time. (d22d81d)
2015-06-30 James Henstridge
* Update media store schema: (f003741)
* Add modification time to MediaFile class. (14ab3df)
* Use the cmake-extras version of the coverage report helpers.
(6161537)
2015-06-04 CI Train Bot
* Releasing 0.105+15.10.20150604-0ubuntu1 (fee6bd5)
2015-06-04 James Henstridge
* Treat invalid dates in MP3s as missing metadata.
Fixes: #1436110
Approved by: Michi Henning (9fb76f2)
* More cleanups. (a8af275)
2015-06-03 James Henstridge
* Update test to actually check what it claims to, and work now that
we've got more test audio files. (b109904)
* Move QML plugin directory so that it isn't shadowed by the
installed version. (9f7f109)
* Ignore date tag if it is NULL (as happens for MP3 files with
invalid dates). (a634460)
* Add tests for bad dates in Ogg and MP3 files. (9b2f316)
2015-01-28 CI Train Bot
* Releasing 0.105+15.04.20150128-0ubuntu1 (5b5f3bf)
2015-01-28 Jussi Pakkanen
* Revert use of WAL log and instead try to rerun queries that fail
with SQLITE_BUSY.
Fixes: #1415318 Approved by: Pete Woods,
PS Jenkins bot (1685430)
* Retry busy queries only a maximum amount of times. (410d427)
* Revert use of WAL log and retry failing queries instead. (5233cce)
2015-01-27 CI Train Bot
* Releasing 0.105+15.04.20150127-0ubuntu1 (6a878f9)
2015-01-27 Jussi Pakkanen
* Send invalidations signals during scans that take a long time so
the dash gets updated.
Fixes: #1414566 Approved by: PS
Jenkins bot, Marcus Tomlinson (9c33c87)
* Use wal mode for the journal as it seems to work when there are
multiple connections to the db. (bb21e62)
2015-01-26 Jussi Pakkanen
* Use only seconds as requested by review. (146537b)
* Putting comparison operators the right way is surprisingly hard.
(b0e329b)
* Tweak invalidation timeout. (36750dd)
* Drain events while scanning so timeouts are processed. (6ba4b4f)
* Send invalidation signals during long lasting scans. (94b9f17)
2015-01-22 CI Train Bot
* Releasing 0.105+15.04.20150122-0ubuntu1 (8edc34f)
2015-01-22 Jussi Pakkanen
* Skip scanning of special directories if they point to user home
dir.
Fixes: #285998 Approved by: James Henstridge, PS
Jenkins bot (db6307c)
* Add blacklist functionality and use it to block music playlists.
Fixes: #1384295 Approved by: James Henstridge, PS Jenkins
bot (15398f7)
* Merged trunk. (aa09dd5)
2015-01-21 CI Train Bot
* Releasing 0.105+15.04.20150121-0ubuntu1 (b36b398)
2015-01-21 Jussi Pakkanen
* Make Valgrind uninitialised jump warning go away. Approved by:
James Henstridge, PS Jenkins bot (bb8acc7)
* Extract metadata from images that don't have exif entries.
Fixes:
#1378880 Approved by: Charles Kerr, James Henstridge, PS
Jenkins bot (20963b4)
2015-01-20 Jussi Pakkanen
* Whitespace fix to restart Jenkins. (c97c5bf)
2015-01-06 James Henstridge
* Still start and stop the daemon manually, since it doesn't close
cleanly. (f4ee7e3)
2015-01-05 James Henstridge
* Switch test_qml over to GIO's dbus test fixture, since it correctly
shuts down the private bus more reliably than dbus-cpp.
(bc4c281)
2014-12-12 Jussi Pakkanen
* Added test for standalone art. (017136a)
2014-12-12 James Henstridge
* Fix ExtractorBackendTest::init test to actually call the
constructor, rather than define a function prototype.
(52536ad)
2014-12-12 Jussi Pakkanen
* Detect standalone album art when building art uris. (f5d1b5d)
2014-12-12 James Henstridge
* Update copyright statements on a few more files. (612aeb3)
* Add copyright headers. (1ea923f)
* Cleanups as per Jussi's review. (dfa5da2)
* If we get no reply from the extraction daemon, retry the job once.
The daemon most likely crashed due to a codec error, but
the current file might not be the one to blame. (95bee5e)
* The @{multiarch} part in the policy wasn't correctly attaching to
extractor, so just use a simple glob. There is enough
context in the rest of the path to be a reliable match.
(3c595c9)
* Add AppArmor profile for mediascanner-extractor, and remove some of
the GStreamer related rules for mediascanner-service.
(c8987cb)
2014-12-11 James Henstridge
* Include mediascanner-extractor in the mediascanner2.0 package.
(3cda86b)
* No need to include "-2.0" in executable name, since it is installed
to a version dependent directory. (d760efb)
* Don't link mediascanner-service-2.0 to GStreamer of libexif. Fix a
crasher bug in the error case of
MetadataExtractor::extract(). (17db744)
* Remove dead code from ExtractorBackend. (d2269d2)
* Add tests that run directly against the extractor backend rather
than through D-Bus to make debugging easier. (535a1dc)
* Add a service file for the extractor service, and update the basic
and test_metadata tests to spin up a private session bus
to talk to the extractor. (5bbb03f)
* Split MetadataExtractor backend code into a ExtractorBackend class,
and make MetadataExtractor proxy the D-Bus service.
(dd46c20)
* Move extractor source to src/extractor. (9dcd72a)
* Skeleton of extractor daemon. (443d555)
2014-10-30 CI bot
* Releasing 0.105+15.04.20141030.1-0ubuntu1 (1fa4551)
2014-10-30 James Henstridge
* When a new directory is added and a new inotify watch is set up,
call fileAdded() on any regular files already in the
directory so they are not missed.
Fixes: 1379817, 1387103
Approved by: Jussi Pakkanen, PS Jenkins bot (272e654)
* Add a fix to check the sqlite version at runtime to check for
versions containing the tokenizer regression. (527f846)
2014-10-24 James Henstridge
* Add a test for the new file+directory case. (cf067ba)
2014-10-23 James Henstridge
* When a directory is added, call fileAdded() on regular files when
checking its initial contents, so no files get missed in
the time between the directory being created and the
inotify watch being added. (b1e6b72)
2014-10-23 Jussi Pakkanen
* Skip scanning of special dirs if they point to user home. (575995f)
2014-10-22 Jussi Pakkanen
* Create blacklist functionality and use it to block audio playlists.
(5beb056)
* Use localtime instead of gmtime. (07ed064)
2014-10-10 Jussi Pakkanen
* Use get_file_info which is a lot more efficient. (f0fda63)
2014-10-09 Jussi Pakkanen
* Made test work regardless of what the timestamp on the test file
is. (afc781d)
* Removed vestigial gfile thingy. (2a6cce5)
* Extract metadata from images that do not have exif entries (such as
pngs). (353e966)
2014-10-01 CI bot
* Releasing 0.105+14.10.20141001-0ubuntu1 (a5a702e)
2014-10-01 James Henstridge
* Use udisksd to track mounts and unmounts of removable media.
Fixes:
1358750 Approved by: Jussi Pakkanen, PS Jenkins bot
(172eb85)
* Further narrow the dbus rules to the specific methods. (f708f19)
* Narrow down the D-Bus apparmor profile rules. (864e58b)
2014-09-30 James Henstridge
* Merge from trunk, fixing conflicts. (b27cbcd)
2014-09-27 James Henstridge
* Remove some unneeded #includes. (e50b0fe)
2014-09-26 Jussi Pakkanen
* Valgrind silencing. (6211c84)
2014-09-26 James Henstridge
* Ignore mount events outside of /media: on the phone, the root file
system is erroneously marked as removable. (a8e8605)
* Remove using directive. (88d9ade)
* Update AppArmor profile to let us talk to udisksd. (e45733b)
* Rip out the mountfd code in the scanner daemon and use MountWatcher
instead. (f838690)
* Add code to monitor mounts of removable media via udisks2. Not
currently integrated into the daemon. (922d8b4)
2014-09-25 CI bot
* Releasing 0.105+14.10.20140925.1-0ubuntu1 (7e936df)
2014-09-25 Jussi Pakkanen
* Use fallback data for crasher files so they at least show up in
scope queries. Approved by: James Henstridge, PS Jenkins
bot (4b06f9c)
* Print banner when starting the daemon so upstart logs are easier to
parse. Approved by: James Henstridge, PS Jenkins bot
(4c33406)
* No need to set title on fallback case, it is done automatically.
(1ccfe23)
2014-09-24 Jussi Pakkanen
* In case of crasher files, write fallback data so at least something
shows up. (e76b200)
2014-09-16 Jussi Pakkanen
* Print banner when starting daemon. (fd67797)
2014-09-09 CI bot
* Releasing 0.105+14.10.20140909-0ubuntu1 (7e388d4)
2014-09-09 Jussi Pakkanen
* Print a log message when skipping a broken file. Approved by: James
Henstridge, PS Jenkins bot (5edeab0)
2014-09-09 Jamie Strandboge
* debian/usr.bin.mediascanner-service-2.0: - add video abstraction -
silence access to /run/udev/data/** like we do elsewhere -
allow read on /dev/video* - allow read on
/sys/devices/**/video4linux/**/uevent Approved by: Jussi
Pakkanen, PS Jenkins bot (47a2cf6)
2014-09-05 Jussi Pakkanen
* More logging. (f2f7627)
2014-09-04 Jamie Strandboge
* updates for various denials: - add video abstraction - silence
access to /run/udev/data/** like we do elsewhere - allow
read on /dev/video* - allow read on
/sys/devices/**/video4linux/**/uevent (6eb9b31)
2014-09-03 CI bot
* Releasing 0.105+14.10.20140903-0ubuntu1 (065de6d)
* Replaced 0replaceme with real versions. (45c32f0)
2014-09-03 James Henstridge
* Expose embedded album art for Album objects too. Bump soname to
account for Album class changing size. Approved by: PS
Jenkins bot (129c2d2)
2014-09-03 Jussi Pakkanen
* Fix usage of blocking cache. Approved by: James Henstridge, PS
Jenkins bot (59742bd)
2014-09-03 James Henstridge
* Record whether files include embedded artwork in the index, and use
this to generate artwork URIs that will invoke the
appropriate image provider (thumbnailer if there is
embedded art, albumart otherwise). Approved by: Jussi
Pakkanen, PS Jenkins bot (93eaa51)
* Fix up D-bus marshalling of Album objects, which was breaking the
qml_dbus tests. (43f7ad7)
2014-09-02 James Henstridge
* Ensure that other album attributes are exposed in albums model.
(04152d6)
* Update symbols. (1b0787c)
* Move the logic for building Album's art URI out of MediaStore and
into Album. Also expose the album's genre. (ba55152)
2014-09-01 James Henstridge
* Update symbols. (6bc4a03)
* Bump library soname, since we've changed the size of Album.
(997b894)
* Expose date through QML album model. (de6a24c)
* Add date and art_uri to Album. (41de067)
* Add move constructor/assignment to Filter. (d7adc3d)
* Add a first() aggregate that returns the first result for a group.
Use this to pick an arbitrary date, filename and
has_thumbnail value for albums (not actually stored yet).
(1366628)
2014-08-31 James Henstridge
* And make sure we don't leak the private struct on assignment.
(e3a886b)
* Fix up copy constructors for Album, and add move
constructors/assignment operators for both Album and
MediaFile. (362bcfc)
* Move Album fields to a private struct. (d27c98a)
2014-08-29 James Henstridge
* Bump package version number. (0995053)
* Update symbols. (5f8bdae)
* Use art URIs from the core library in the QML plugin. (4d6bb85)
* Add getArtUri() method to MediaFile and Album. (0aeae17)
2014-08-28 James Henstridge
* Merge lp:~jpakkane/mediascanner2/thumbnailinfo fixing conflicts
(868a4f5)
2014-08-25 Jussi Pakkanen
* A (1db64e6)
* Fix usage of dirblock cache. (ee23b0a)
2014-08-25 CI bot
* Releasing 0.104+14.10.20140825-0ubuntu1 (d1f14ab)
* Replaced 0replaceme with real versions. (ba46178)
2014-08-25 Jamie Strandboge
* allow read access to /etc/udev/udev.conf for gstreamer (LP:
#1356883)
Fixes: 1356883 Approved by: James Henstridge, PS
Jenkins bot (8010982)
2014-08-25 James Henstridge
* Update AppArmor policy to allow read access to
/sys/devices/**/video4linux/video**
Fixes: 1353139
Approved by: Jussi Pakkanen, PS Jenkins bot (2725b77)
2014-08-25 Jussi Pakkanen
* Add database integrity constraints. Approved by: James Henstridge,
PS Jenkins bot (4c18b7d)
* Don't call closedir with a null argument. Approved by: James
Henstridge, PS Jenkins bot (920675e)
* Store information on files that break GStreamer and skip them when
encountered. Approved by: James Henstridge, PS Jenkins bot
(bb34021)
* Fix inotify usage. Approved by: James Henstridge, PS Jenkins bot
(1cf897b)
2014-08-25 James Henstridge
* Add support for custom sort orders to query(), queryArtists() and
queryAlbums(). This involves an API break, so the soname
has been changed. Approved by: Jussi Pakkanen, PS Jenkins
bot (30e3b78)
2014-08-25 Jussi Pakkanen
* Detect whether a media file has an embedded thumbnail. (3c3f8e1)
* Add field that tells whether the file has an embedded thumbnail
image. (5535d46)
* Test constraints. (2f2e584)
* Return if encountering a bad file. (634bd4c)
2014-08-22 Jamie Strandboge
* Author: Jamie Strandboge Description: allow
read access to /etc/udev/udev.conf for gstreamer Bug:
https://launchpad.net/bugs/1356883 (2effede)
2014-08-22 Jussi Pakkanen
* Add data integrity constraints to database. (8d81817)
2014-08-22 James Henstridge
* Set the library version from the toplevel CMakeLists file.
(c870825)
2014-08-22 Jussi Pakkanen
* Symbol fix. (5824495)
* Store etag info in broken files so they are no longer blocked once
they get updated. (1f19856)
2014-08-22 James Henstridge
* Update changelog. (aa1cb5a)
* Allow read access to video4linux sysfs files to fix AppArmor
problems on Manta. (0a54187)
* Add sort order tests for queryAlbums and queryArtists. (e6ecbbd)
* Add sort order tests for query(). (4a72def)
* Update symbols. (59d0719)
* Bump soname. (4dbb8e2)
* Add sorting code to queryAlbums() and queryArtists(). (7fcbf90)
* Handle ordering in query(). (8f73fb2)
2014-08-21 James Henstridge
* Fix up methods that were bypassing the database mutex. (d2a59c4)
* Update signature of query(), queryAlbums() and queryArtists()
methods. (1e8a703)
2014-08-19 CI bot
* Releasing 0.103+14.10.20140819-0ubuntu1 (8c95929)
2014-08-19 Jussi Pakkanen
* Apparmor fix from jdstrand.
Fixes: 1357348 Approved by: Pete Woods,
PS Jenkins bot (201b426)
* Check for null. (d406d41)
* Fix symbols file. (8b86fa5)
2014-08-18 Jussi Pakkanen
* Store and skip broken files when scanning. (3885790)
* Added functionality to maintain a list of files that break
GStreamer metadata scanner. (96a8249)
* Fix inotify usage. (519880c)
2014-08-15 Jussi Pakkanen
* Apparmor fix from jdstrand. (df4b7af)
2014-08-15 CI bot
* Releasing 0.103+14.10.20140815.1-0ubuntu1 (5e24cd1)
2014-08-15 Jussi Pakkanen
* Merge lp:~xnox/mediascanner2/missing-dev-depends,
lp:~jamesh/mediascanner2/model-auto-update,
lp:~jpakkane/mediascanner2/libc++ and
lp:~jpakkane/mediascanner2/premountwatcher Approved by:
Jussi Pakkanen, PS Jenkins bot (b6074ea)
2014-08-15 James Henstridge
* Add back the filled signal since music-app started using it. We
can remove it when they update. (490e0e0)
* Update change log. (5679f8d)
2014-08-15 Jussi Pakkanen
* Handle the case when /media/username does not exist when
Mediascanner first starts up. (399fc72)
* Minor fixes for libc++. (2eb64eb)
2014-08-15 James Henstridge
* Automatically update models when the daemon sends the
InvalidateResults D-Bus signal. Add a status property to
models to let loading progress be tracked. Rename rowCount
property to count, keeping the old name around for
compatibility. (f49b5f9)
2014-08-15 Dimitri John Ledkov
* Add missing dependencies to libmediascanner-2.0-dev package.
(58218f9)
2014-08-14 Jussi Pakkanen
* Make GSource's unique_ptr always destroy it fully. (bbd9671)
* Fixed issues raised by James. (648ca48)
2014-08-13 Jussi Pakkanen
* Print log message when /media/username does not exist on startup.
(6c2e5f6)
2014-08-12 Jussi Pakkanen
* The Columbo fix. (b449e53)
* Handle the case where /media/username does not exist on startup.
(a9d2be6)
2014-08-12 James Henstridge
* Rename method and member based on Jussi's review. (d0eea79)
2014-08-11 Jussi Pakkanen
* A few fixes for libc++. (db32a92)
2014-08-07 James Henstridge
* s/rowCount/count/ in the QML tests. (3c3ff5c)
* Make sure AdditionEvent::error is initialised. (aa4a72e)
* Update qmltypes. (1cc7135)
* No need to hold onto exception pointer in event. (8b73ef7)
* Expose error state through the model "status" property. (7b3d5e2)
* Replace the StreamingModel::filled signal with a status property
with a corresponding statusChanged notification signal,
similar to Image. This should allow hooking up progress
UI. (a9aedb5)
* Merge from trunk (4b82feb)
* Hook the MediaStoreWrapper::updated signal to the
StreamingModel::invalidate slot when setting the
associated store so that updates are propagated to the
models. (e8526f8)
* Simplify the D-Bus signal connection code, and have the bus filter
the signals we receive by argument. (e8b6de1)
* Add an updated() signal to MediaStoreWrapper, emitted when
mediascanner-service sends out the ResultsInvalidated
signal. (a37d96d)
2014-08-06 James Henstridge
* Have mediascanner-service register a name on the session bus
(different to what mediascanner-dbus uses), and send the
D-Bus signals directly. (9b238b0)
2014-08-05 CI bot
* Releasing 0.102+14.10.20140805-0ubuntu1 (9e1de26)
2014-08-05 James Henstridge
* Fix off by one error when appending new rows to QML models.
Fixes:
1350529 Approved by: Pete Woods, PS Jenkins bot (d0126b3)
* Fix off-by-one error when signaling which rows have been inserted
in the model. The third argument to beginInsertRows() is
the index of the last row being inserted, rather than the
index after. (ed21a3a)
2014-08-01 Dimitri John Ledkov
* Add missing dependencies to libmediascanner-2.0-dev package.
(3162184)
2014-07-30 CI bot
* Releasing 0.102+14.10.20140730.1-0ubuntu1 (1b6cefa)
* Replaced 0replaceme with real versions. (876d24e)
2014-07-30 Jussi Pakkanen
* Merge all approved pending branches. Approved by: PS Jenkins bot
(8b46a24)
2014-07-30 James Henstridge
* Bump soname. (14a8440)
2014-07-25 James Henstridge
* Update changelog. (c1f60d3)
2014-07-25 Jussi Pakkanen
* Archive items on unmount. (cfee73b)
* Archive items on external drives when they are unmounted. (9003f2c)
2014-07-25 James Henstridge
* Update version number in CMakeLists.txt (f794828)
* Update changelog. (2989cf8)
* Add MediaStore::queryArtists() method, needed for the new scope
design. (9ccf45f)
2014-07-25 Jussi Pakkanen
* Install Filter.hh. (0072534)
* Fixes for various issues found by flint++. (163752a)
2014-07-25 James Henstridge
* Stream data to the QML models in chunks through a background thread
using QtConcurrent. (8be1733)
2014-07-25 Jamie Strandboge
* Update to in archive version (0.101+14.10.20140627-0ubuntu2).
(6247894)
2014-07-25 Jussi Pakkanen
* Added an autopkgtest. (fe45b37)
2014-07-25 James Henstridge
* Fix up symbols for queryArtists() method. (ce96b58)
* Install Filter.hh. (b440801)
* Add queryArtists to D-Bus interface. (6578690)
* Add queryArtists() method. (0528e01)
2014-07-24 James Henstridge
* Merge lp:~jamesh/mediascanner2/streaming-model (1bcea83)
2014-07-24 CI bot
* Releasing 0.101+14.10.20140724.1-0ubuntu1 (96a3e78)
* Adjust apparmor configuration for MTK device (2dbd32e)
2014-07-24 Alfonso Sanchez-Beato
* Adjust apparmor configuration for MTK device (3c9ef0f)
2014-07-23 Jussi Pakkanen
* Install Filter.hh. (8e7a674)
2014-07-21 CI bot
* Releasing 0.101+14.10.20140721-0ubuntu1 (5b25b1c)
2014-07-21 Jussi Pakkanen
* Specify GCC 4.9 explicitly to prevent ABI breakage. Approved by:
James Henstridge (2aaee52)
* Bump dbus-cpp dependency. (0175a43)
2014-07-17 James Henstridge
* More review fixes from Jussi. (d50885d)
* Update based on review comments. (bcf619f)
2014-07-16 Timo Jyrinki
* Releasing 0.101+14.10.20140715 (8c85ef2)
2014-07-16 Jussi Pakkanen
* Various fixes for flint++ issues. (f6e03d0)
* Always include class header first in the corresponding
implementation file. (1ca584c)
* Use nullptr consistently. (d4126d3)
2014-07-15 CI bot
* Releasing 0.101+14.10.20140715-0ubuntu1 (8bed854)
* Rebuild project du to changes in the dbus-cpp abi. Approved by:
Jussi Pakkanen (92e8058)
2014-07-10 James Henstridge
* Update symbols. (dd7c198)
* Fix songsearchmodel test. (24bab92)
* Short circuit the concurrent thread when there is no store.
(4d59147)
* Update qmltypes. (5126ec0)
* Port SongsModel and SongsSearchModel to StreamingModel. (0532763)
* Port AlbumsModel to Streaming code. (58fdd7e)
* Port Artists model over to streaming model. (c19b3a6)
* Port GenresModel over to StreamingModel base class. (3454a6a)
2014-07-07 James Henstridge
* Use the limit/offset options in the filter object rather than using
a separate argument. (5e836ce)
2014-07-04 James Henstridge
* Add limit and offset to mediascanner::Filter, and update D-Bus
codec to handle it. (1cc7c41)
2014-07-02 CI bot
* Releasing 0.101+14.10.20140702-0ubuntu1 (14b9b63)
2014-07-02 James Henstridge
* Update the FTS tokenizer to work with SQLite 3.8.5, and reenable
the MediaStoreTest.query_short test. Bump libsqlite3-dev
build dependency to 3.8.5 too. (4795814)
2014-07-01 James Henstridge
* Bump libsqlite version requirements. (c5d7016)
* Fix FTS tokenizer to work with new SQLite. (117633a)
2014-07-01 Ricardo Salveti de Araujo
* releasing package mediascanner2 version
0.101+14.10.20140627-0ubuntu3 (e752065)
* apparmor: add missing proc file used by the mediatek soc (f6f2012)
* releasing package mediascanner2 version
0.101+14.10.20140627-0ubuntu2 (4a5d43b)
2014-06-27 Jamie Strandboge
* debian/usr.bin.mediascanner-service-2.0: couple more minor
updates for (mostly) noisy denials - use consoles
abstraction instead of just the pts interface since we
need /dev/tty when crashing - finetune orcexec rules
by allowing 'm' in /tmp but explicitly deny the others
- allow non-owner read of @{PROC}/cmdline - use
attach_disconnected for /dev/socket/property_service
(c3e16b8)
2014-06-27 CI bot
* Releasing 0.101+14.10.20140627-0ubuntu1 (feed45c)
* Disable short query test to work around a behavioral change in
SQLite.; debian/usr.bin.mediascanner-service-2.0: updates
for libhybris based on work by Ricardo Salveti. (LP:
#1334940) (31c8b85)
2014-06-27 Jamie Strandboge
* merge lp:~jpakkane/mediascanner2/sqliteworkaround then update
changelog to use UNRELEASED (00bc22f)
2014-06-27 Jussi Pakkanen
* Changelog update. (40f263c)
* Apparmor fix from jdstrand. (36c73f7)
* Disable short query test temporarily due to sqlite issue. (6a3020a)
* Back to no :native. (445de47)
* Update packaging to keep supporting cross-compilation. (e1231fc)
2014-06-26 Jussi Pakkanen
* Explicitly select GCC 4.9 to avoid ABI transition issues. (0bb5c15)
2014-06-25 CI bot
* Releasing 0.101+14.10.20140625-0ubuntu1 (13b1c36)
* Update symbols (dad9ed7)
* * add AppArmor profile (LP: #1319065) - add
debian/usr.bin.mediascanner-service-2.0 -
debian/control: Build-Depends on dh-apparmor -
debian/rules: update override_dh_installdeb to use
dh_apparmor - debian/mediascanner2.0.dirs: add
etc/apparmor.d - debian/mediascanner2.0.install:
install profile in to place
Fixes: 1319065 (b2f0f6a)
2014-06-25 Jamie Strandboge
* * add AppArmor profile (LP: #1319065) - add
debian/usr.bin.mediascanner-service-2.0 -
debian/control: Build-Depends on dh-apparmor -
debian/rules: update override_dh_installdeb to use
dh_apparmor - debian/mediascanner2.0.dirs: add
etc/apparmor.d - debian/mediascanner2.0.install:
install profile in to place
Fixes: 1319065 (f6569ad)
2014-06-25 James Henstridge
* Enable the QML plugin to pick between two MediaStore backends: the
direct disk backend and the D-Bus interface. The choice
is made via the MEDIASCANNER_USE_DBUS environment
variable, and defaults to direct access. (c3e163c)
2014-06-24 Jamie Strandboge
* * add AppArmor profile (LP: #1319065) - add
debian/usr.bin.mediascanner-service-2.0 -
debian/control: Build-Depends on dh-apparmor -
debian/rules: update override_dh_installdeb to use
dh_apparmor - debian/mediascanner2.0.dirs: add
etc/apparmor.d - debian/mediascanner2.0.install:
install profile in to place (abec60c)
2014-06-24 James Henstridge
* Address Jussi's review comments. (4125637)
* Change environment variable name. (be5587f)
* Update symbols file. (a831d7f)
* Pick which MediaStore implementation to use based on an environment
variable. Also run the QML tests twice: once for each
backend. (f284ce3)
* Add an abstract base class shared by mediascanner::MediaStore and
mediascanner::dbus::ServiceStub. (c6e4a4f)
2014-06-13 Jussi Pakkanen
* Documentation fix. (42a29e8)
* Build a media file, too. (33997fc)
* Added an autopkgtest. (c306ec8)
2014-06-13 CI bot
* Releasing 0.101+14.10.20140613-0ubuntu1 (f0a71fd)
* Update symbols (1517850)
2014-06-13 James Henstridge
* Add support for scanning photos using libexif. Adds libexif-dev as
new build dependency.
Fixes: 1256334 (799acfa)
* Catch exceptions in the QML plugin, and print a warning instead.
QML applications terminate when C++ exceptions bubble up,
which can not be recovered from.
Fixes: 1326753 (e6a801d)
* Increase the timeout on D-Bus method calls.
Fixes: 1326753
(4374051)
* Fix typo in the symbols file. (aafc784)
2014-06-11 James Henstridge
* Add new symbols, and sort/uniq the list. (eef7f05)
* Merge lp:~jpakkane/mediascanner2/symbols (c21657d)
* Fix up misuse of logging API in AlbumsModel. (2ec024f)
* Longitude and latitude should be doubles. (630cb37)
* Fix up EXIF date extraction routine based on review from Jussi.
(d7907d4)
* Make sure the stream info list gets freed. (75852ec)
2014-06-10 James Henstridge
* Increase the timeout for dbus-cpp method calls. (ba899da)
* Protect MediaStore calls with try/catch blocks, since QML code will
terminate if the exception bubbles up. (2707a01)
2014-06-07 James Henstridge
* Expose new metadata via QML API too. (0e652f4)
* Expose ImageMedia constant to QML. (60f03f8)
* Adjust the indexes so they are used for the list*() methods.
(6ffc1a9)
* Also scan the pictures directory. (6ce28d6)
* Include new metadata fields in D-Bus API. (630334f)
2014-06-06 James Henstridge
* Update MediaStore tests to include round trip testing of image
metadata. (fe997c1)
* Add support for additional metadata fields to media store.
(05d0f5c)
* Build-depend on libexif-dev. (99a038f)
* Remove imagetest, since the code has been incorporated into
MetadataExtractor. (0e9638f)
* Include tests for extracting metadata from photos. (d3394cd)
* Add some test images. They have been shrunk to keep size down, but
EXIF data has been left untouched. (5c9c256)
* Add EXIF parsing code to MetadataExtractor, and also extract height
and width from videos. (3515f56)
* Add height, width, latitude and longitude fields to MediaFile.
(20d0a98)
2014-06-05 James Henstridge
* Fix up handling of GPS coordinates and width/height. (58be0fd)
2014-06-05 Jussi Pakkanen
* Added symbol files and removed one unused old test binary that no
longer linked. (ae32fd8)
2014-06-05 James Henstridge
* Use libjpeg to read the file size. (9076b12)
* Merge from lp:~jpakkane/mediascanner2/imagetest (c407ef4)
2014-05-30 CI bot
* Releasing 0.101+14.10.20140530-0ubuntu1 (5a7d212)
2014-05-30 James Henstridge
* Merge lp:~jpakkane/mediascanner2/nomedia,
lp:~jamesh/mediascanner2/mediafile-constructor,
lp:~jpakkane/mediascanner2/clangfixes,
lp:~jpakkane/mediascanner2/nullguard,
lp:~jpakkane/mediascanner2/projectname,
lp:~jpakkane/mediascanner2/pruneblocked,
lp:~jamesh/mediascanner2/dbus-transport,
lp:~jamesh/mediascanner2/dbus-apparmor,
lp:~jamesh/mediascanner2/media-filter (0937a45)
* Fix typo in service name. (96fb3ef)
2014-05-29 James Henstridge
* Use full libdir. (e56aedc)
* Fix D-Bus name in service file. (f0bfb7a)
* Update changelog for lp:~jamesh/mediascanner2/media-filter
(96d29e1)
* Introduce a mediascanner::Filter type to hold search parameters for
the various MediaStore::list*() methods, and expand them
to handle genres. The new API also distinguishes between
an unset filter and a filter set to "". Make similar
changes to the QML API, and add notify signals to the
rowCount properties. (71fe545)
* Update Debian change log for merged branches. (be0e2d8)
* Limit access to the MediaScanner D-Bus interface from confined
processes. (b9634d8)
2014-05-29 Jussi Pakkanen
* Prune those files that have a scan block file on their path when
restoring. (b889be5)
* Apply paper bag to head. (28a988c)
2014-05-29 James Henstridge
* Add a D-Bus service exposing the MediaStore, and move the QML
binding over to using it. (eb9d1a3)
2014-05-29 Jussi Pakkanen
* Fix CMake Project name. (2768b18)
* Guard against empty MediaFileBuilders. (cea946e)
* Fix a few warnings emitted by clang. (fed1b76)
2014-05-29 James Henstridge
* Get rid of the direct constructor for MediaFile, forcing creation
to go through MediaFileBuilder (which won't break when we
add more metadata fields). (8d38753)
2014-05-29 Jussi Pakkanen
* Add support for .nomedia files to prevent chosen subtrees from
being scanned. (4f1e3e4)
2014-05-29 James Henstridge
* Merge ~jamesh/mediascanner2/dbus-apparmor (8095bca)
* If apparmor is not enabled, treat d-bus peers as unconfined.
(4c69f5f)
* Add notify signal for rowCount properties. (19e9fbf)
* Add genres model. (34f2f0a)
* Test genre property on albums and songs models. (18ed420)
* Actually reference plugin.qmltypes in qmldir (3fdff26)
* Add genre property to other models and update QML types. (335d387)
2014-05-28 James Henstridge
* Add genre property to ArtistsModel. (6520fb2)
* Distinguish between unset and empty string filters. (06343b9)
* Use mediascanner::Filter in the D-Bus API and QML plugin. (c9601c8)
* Include a timeout on the QML test. (dd04236)
* Convert listing methods over to using mediascanner::Filter.
(57589a4)
* Add support for serialising/deserialising mediascanner::Filter with
dbus-cpp. (9d98b26)
2014-05-27 James Henstridge
* Add MediaFilter class. (e76b0a1)
* Limit access to the D-Bus interface from confined applications.
(9281ca4)
2014-05-24 James Henstridge
* Remove some excess debug logging. (fa269f0)
2014-05-23 James Henstridge
* Add a comment explaining why the helper D-Bus library is linked
with -fPIC. (1639db4)
* Build-Depend on libproperties-cpp-dev. (0e2e85d)
* Build-Depend on libdbus-1-dev. (c7113eb)
* Depend on libdbus-cpp-dev (for dbus service) and dbus (for tests).
(e51cc6e)
* Install dbus service along with activation config file. (af89063)
* Make QML tests run against D-Bus service. (2197059)
2014-05-22 James Henstridge
* Make the QML binding access the media store over D-Bus. (66a8667)
* Compile dbus code into a static library so it can be used by the
QML binding. (bfaa4f5)
* Add stub class for D-Bus interface. (8c73715)
2014-05-21 James Henstridge
* Fill out rest of MediaStore API. (bff4a23)
2014-05-20 James Henstridge
* Start of MediaScanner d-bus interface. (9eb73a0)
2014-05-16 Jussi Pakkanen
* Fixed CMake project name. (049c9e2)
2014-05-15 Jussi Pakkanen
* Grab basic data. (7b6318a)
* Simple image metadata extractiont tool. (3ba0d85)
* Guard against empty MediaFileBuilders. (230f3c9)
2014-05-15 James Henstridge
* Remove comment about multiple calls to MediaFileBuilder::set*()
methods raising an exception. (374665c)
2014-05-14 Jussi Pakkanen
* Fix clang warnings in third party file. (79fe343)
* Fixed forward declaration of DetectedFile. (03b589c)
* Merged trunk. (0bc3ee7)
2014-05-14 James Henstridge
* Get rid of unneeded build() call. (54a128a)
* Move fallback title and album_artist code to MediaFile construction
time: this is safe because the properties can't be changed
after construction. (5f17ef8)
* Add a simple move constructor for creating a MediaFile from a
MediaFileBuilder. (aed4ea6)
* Add equality operation to MediaFilePrivate. (6f41529)
* Add missing destructor to MediaFileBuilder. (293b52f)
2014-05-12 James Henstridge
* Get rid of long constructor on MediaFile. (19c97fa)
* Switch qml test suite over to MediaFileBuilder. (91bca8b)
* Switch MediaStore over to using MediaFileBuilder. (1538284)
* Allow chaining of MediaFileBuilder methods, and convert
test_mediastore tests over. (604bc00)
* Make MediaFileBuilder using MediaFilePrivate too, simplifying
construction of MediaFile instances. (39fe19b)
* Move MediaFile fields to a private struct. (22a645a)
2014-05-09 Jussi Pakkanen
* Cache scanblock info. (3be9a0e)
* Check scan blocks on restore. Also unify the two util files.
(b0a44d4)
2014-05-08 CI bot
* Releasing 0.100+14.10.20140508-0ubuntu1 (8717791)
2014-05-08 James Henstridge
* Add genre and discNumber metadata fields to the media index, and
expose it in the QML binding. (8563f05)
2014-05-08 Jussi Pakkanen
* Use generator for file traversal instead of a vector. (ec38265)
* Don't scan optical discs. (62794fe)
2014-05-08 James Henstridge
* Update qmltypes. (53eda2d)
2014-05-06 James Henstridge
* Test that the get() method works. (f5cf2aa)
* Add get() methods to models. (824d75f)
2014-05-06 Jussi Pakkanen
* Added support for a .nomedia file which tells mediascanner not to
scan specified directories. (2d6a492)
2014-05-06 James Henstridge
* Expose row counts of models to QML. (d55f5b1)
* Expose genre and discNumber through QML interface. (b3cf5a1)
* Extract genre and disc number from media. (ca0b487)
* Store genre and disc_number in index. (2a6b390)
* Add genre and disc_number properties to MediaFile. (74f3265)
2014-05-05 Jussi Pakkanen
* Moved generator's functionality inside scanner. (490a8b8)
2014-05-02 Jussi Pakkanen
* Removed useless if. (6bf1d68)
* Allocate directory entry only once. (fb619d9)
* Added test for is_optical. (6555644)
2014-04-28 Jussi Pakkanen
* Store some more state to make it really work this time. (0d061b0)
* Use unique ptr. (713c10a)
* Use the generator for traversal. (96565ef)
* Create a generator for file traversal. (07202ea)
2014-04-09 Jussi Pakkanen
* Skip top level mounts that look like optical discs. (1ee715a)
2014-04-03 CI bot
* Releasing 0.100+14.04.20140403-0ubuntu1 (be2ebbf)
2014-04-03 James Henstridge
* Before using GStreamer to extract metadata from a file, print a log
message. This is intended to help track problems with
metadata extraction. (c458a08)
2014-04-03 Jussi Pakkanen
* The output value of stat is undefined when the stat call fails. So
don't use it. (500940b)
2014-04-03 James Henstridge
* Remove the Unity scope found in src/utils: it looks like it has
suffered from bit rot and has never been used (we have
unity-scope-mediascanner instead). (c11920f)
2014-04-03 Jussi Pakkanen
* Avoid assert crash by not trying to unregister subvolumes that were
skipped due to looking like root subdirs.
Fixes: 1294193
(03ef0eb)
2014-04-03 James Henstridge
* Add a full stop to the end of the log message. (140511a)
2014-04-02 James Henstridge
* Before using GStreamer to extract metadata from a file, print a log
message. This is intended to help track problems with
metadata extraction. (d628c55)
2014-04-01 Jussi Pakkanen
* And a newline. (fafe06a)
* When stat fails, the result struct is not populated so do not use
it. (e811b8a)
2014-03-28 James Henstridge
* Remove unused (and seemingly bitrotten) test program. (03e866f)
* Remove the (unused) demo scope: it uses the old scopes API, and is
incomplete compared to the scope provided by
unity-scope-mediascanner. (6e99ebd)
2014-03-24 CI bot
* Releasing 0.100+14.04.20140324-0ubuntu1 (a0332e3)
2014-03-24 James Henstridge
* Expose an "art" role/property on album and song models, returning a
URI that can be used with a QML Image component. The
actual image provider comes from ubuntu-ui-toolkit.
(505591f)
* Update plugin.qmltypes. (93b72aa)
* Add album art URI roles to MediaFile and Album models. (25bd5c0)
2014-03-21 Jussi Pakkanen
* Avoid assert crash and improve logging. (d15419f)
2014-03-14 CI bot
* Releasing 0.100+14.04.20140314-0ubuntu1 (ea1d9d4)
2014-03-14 Jussi Pakkanen
* Delay signal handling initialisation. (58f1a4e)
* Skip subdirectories that look like root directories. (f102357)
* Keep going if inotify watch creation fails. (6547bd9)
* Initialise signal handling later. (6d410d1)
2014-03-12 Jussi Pakkanen
* Let us not forget Windows drives. (554ea6c)
* Added test for rootlike skipping. (53b7fc9)
2014-03-11 Jussi Pakkanen
* Skip subdirectories that look like top level root directories.
(9af8f57)
2014-03-10 Jussi Pakkanen
* Keep going if watch creation fails. (0ebc6ba)
2014-03-10 CI bot
* Releasing 0.100+14.04.20140310-0ubuntu1 (3df9df7)
* No change rebuild against Qt 5.2.1. (fa34b53)
2014-03-07 CI bot
* Releasing 0.100+14.04.20140307.1-0ubuntu1 (51a39a2)
2014-03-07 Michal Hruby
* Fix incorrect depends (54311c3)
2014-03-07 James Henstridge
* Merge lp:~jamesh/mediascanner2/qml-plugin,
lp:~jamesh/mediascanner2/short-searches,
lp:~jpakkane/mediascanner2/errmsg,
lp:~jpakkane/mediascanner2/cleanshutdown,
lp:~jpakkane/mediascanner2/threadness and
lp:~jamesh/mediascanner2/glib-main-loop (42313c4)
2014-03-07 Michal Hruby
* Fix incorrect depends (7e67d1a)
2014-03-07 James Henstridge
* Update change log to cover merged branches. (7448a22)
* Convert the scanner daemon over to using the glib main loop rather
than a hand rolled one, and limit invalidation signals to
be sent at most once a second. (ddac597)
2014-03-07 Jussi Pakkanen
* Made SQLite db safe to access from multiple threads. (0d5d884)
* Shutdown cleanly on signals. (70e4e49)
* Add sqlite error string to exception. (8014f3a)
2014-03-07 James Henstridge
* Relax the rules for tokenising the input when it ends with a short
token followed '*' wildcard. This allows us to produce
results for short strings when doing incremental searches.
(9860b5d)
* First stages of a QML plugin for the Media Scanner. At present it
only exposes the query() and lookup() interfaces.
(fd72714)
2014-03-06 James Henstridge
* Update comment to match new logic. (ae448e0)
* Don't free the GError if it is NULL. (7d9ca52)
* Make InvalidationSender send dbus signals from a timeout callback,
to batch multiple invalidations that occur within a short
time frame. (ce82808)
2014-03-05 James Henstridge
* Merge lp:~jpakkane/mediascanner2/cleanshutdown and convert shutdown
changes over to using g_unix_signal_add(). (5f6c0b2)
* Remove SubtreeWatcher::pumpEvents() (1ab6af0)
* Switch ScannerDaemon::run() over to running the glib mainloop, and
switch mountfd over to a main loop source too. (1564e2e)
* Fix cast calls. (6d2ac93)
* Make SubtreeWatcher register a glib mainloop source on
construction, and give it direct access to the
InvalidationSender object. (6e02b72)
* Rather than each subtree watcher running select() again, make
ScannerDaemon::run() check the FD set before asking each
watcher to process events. (0da8383)
2014-03-03 Jussi Pakkanen
* A few cleanups. (7a81bdd)
* A few leak fixes uncovered by Valgrind. (a74d1b9)
2014-02-28 James Henstridge
* Add artists model. (830932b)
* Add support for listing artists. (08913c7)
2014-02-27 James Henstridge
* Add a test for the MediaStore QML methods. (3deff24)
* Update plugin.qmltypes (fff5463)
* Add album list model. (94a2b49)
* Add songs listing model. (970cc57)
* Add listSongs() API to MediaStore. (fdbfba9)
2014-02-26 James Henstridge
* Merge from trunk (40c8408)
* Build depend on qtdeclarative5-test-plugin. (ac517be)
* Run tests under minimal platform module. (756e182)
2014-02-25 James Henstridge
* Add base class for album models. (14b21f3)
* Add test harness for QML tests. (4a21808)
2014-02-24 Jussi Pakkanen
* Do not throw in destructor. (cb8b0b5)
* Made sqlite database queries thread safe. (4fbde47)
* Shutdown cleanly when signals happen. (556ab46)
* Add sqlite error string to exception description. (4432d2c)
2014-02-24 James Henstridge
* Only output short tokens of at least one character long. (037b6e4)
* Add a test for short queries. (389a3f7)
* The only case where Mozilla was making use of wildcard searches was
to match single character CJK queries, where they were
expanded to "x*" to match bigrams starting with that
character. Hence the check that the token was at the
start of the string and contained a single character
encoded in UTF-8 as three or more bytes. (c365380)
2014-02-20 CI bot
* Releasing 0.99+14.04.20140220-0ubuntu1 (4037e61)
2014-02-20 Jussi Pakkanen
* Send invalidation signal once the db is fully populated. (21bbeee)
* Nil merge to get on the release train. (2ecee7a)
2014-02-20 James Henstridge
* Add an abstract list model for searching for songs. (753d9b6)
2014-02-19 Jussi Pakkanen
* Set invalidation once data is read from disk. (8a5e715)
* Removed empty grilo subdirectory. (5b12188)
* Fix path where media cache is stored. (37001ec)
* Use lstat to avoid loops. (8106658)
2014-02-19 James Henstridge
* Move plugin classes to a namespace. (35ce37b)
2014-02-18 Jussi Pakkanen
* Use lstat so we do not get into eternal loops. (9929a91)
* Renamed storage path. (8870aaa)
2014-02-17 Jussi Pakkanen
* Added const qualifiers to methods and made album immutable just
like mediafile. (ace7e0c)
* Merged trunk. (21972ee)
2014-02-17 James Henstridge
* Add a limit argument to MediaStore::queryAlbums(), and ensure that
it returns some results when given an empty query string.
(e3159b6)
* Merge from trunk (cf6bc42)
2014-02-12 James Henstridge
* Ensure that queryAlbums() returns some results for empty queries.
(8c0fcd0)
* Ensure that blank queries for albums returns some results.
(457759e)
* Add a limit argument to the queryAlbums() method. (a855470)
2014-02-05 CI bot
* Releasing 0.99+14.04.20140205-0ubuntu1 (1b8983d)
* Null merge to get changes through CITrain (cb5219c)
2014-01-31 Jussi Pakkanen
* Merged trunk. (f068aaa)
* Simpler header reorg. (3fa7cdf)
2014-01-31 James Henstridge
* Update to match new namespacing. (022b3c4)
* Merge from trunk (264e610)
2014-01-31 Jussi Pakkanen
* Add a mediascanner namespace. (b4125f4)
2014-01-30 James Henstridge
* Add a limit argument to MediaStore::query(), and ensure that it
produces some results in response to an empty query.
(845708a)
2014-01-30 Jussi Pakkanen
* Constify and immutabilize. (5e4e0de)
2014-01-30 James Henstridge
* Produce some results in response to an empty query, and add tests
for this case and the limit clause. (2f9fa42)
* Add a limit argument to the query() method. (e306a7d)
2014-01-29 Jussi Pakkanen
* Moved non-installed headers to internal subdirectory. (80dbde6)
* Install MediaFileBuilder's header file. (e1290e1)
2014-01-22 Jussi Pakkanen
* Simple class for sending result set invalidation messages.
(37c5d16)
2014-01-20 Jussi Pakkanen
* Grabbed invalidation code from old branch. (9d4d790)
2014-01-17 Automatic PS uploader
* Releasing 0.99+14.04.20140117-0ubuntu1 (revision 197 from
lp:mediascanner2). (5ddf5a1)
* Releasing 0.99+14.04.20140117-0ubuntu1, based on r197 (2463413)
2014-01-16 James Henstridge
* Add LGPL headers to QML plugin code. (c683253)
* Merge from trunk (057b716)
* Fix the licensing on the public library so that it is correctly
labelled as LGPL, like the old mediascanner code base.
(5efef37)
2014-01-16 Jussi Pakkanen
* Moved class documentation to its proper place. (6597d4a)
* Added namespace. (e48ad53)
2014-01-15 James Henstridge
* Fix a few issues that prevent the scanner daemon from running when
stdin is redirected to /dev/null. (5845dc0)
* Remove the "Press enter to quit" feature, since it fails if stdin
is hooked up to /dev/null. (0e020b0)
* Don't use getlogin() to determine current user, since it fails when
stdin is redirected. (b747421)
* The contents of src/mediascanner (the public interface) really
should be LGPL, like the library it is replacing.
(6ce863d)
2014-01-10 Automatic PS uploader
* Releasing 0.99+14.04.20140110-0ubuntu1 (revision 194 from
lp:mediascanner2). (27726f5)
* Releasing 0.99+14.04.20140110-0ubuntu1, based on r194 (271222d)
2014-01-10 Ćukasz 'sil2100' Zemczak
* We no longer ship any LGPL sources. Also, fix packaging naming in
some places - along with Vcs-* (ce4d2a1)
* Binary name of mediascanner2.0 is ok, but a source package
shouldn't include a major and minor version - this changes
far too rapidly. So, maybe rename it to mediascanner2
instead?. (cc45c59)
* Binary name of mediascanner2.0 is ok, but a source package
shouldn't include a major and minor version - this changes
far too rapidly. So, maybe rename it to mediascanner2
instead? (8e24e0e)
2014-01-02 James Henstridge
* Include the generated plugin.qmltypes file under source control,
and add a "make update-qmltypes" command to update it.
(0e4d944)
* Build-depend on QtQuick, since qmlplugindump seems to need it.
(1a3d1e9)
* Rearrange source tree to match QML import paths so we can generate
the plugins.qmltypes file. (a4012d0)
* Merge from trunk. (0d2596d)
2013-12-29 Ćukasz 'sil2100' Zemczak
* Add bzr-builddeb and the bootstrapping commit for daily-build.
(4d215e7)
2013-12-20 Ćukasz 'sil2100' Zemczak
* Add bzr-builddeb and the bootstrapping commit for daily-build
(942488c)
2013-12-18 James Henstridge
* Adjust packaging to allow parallel installation, and add Upstart
session job. (aae6154)
* Add Upstart session job, parallel installable with old media
scanner. (fb30c57)
* Name the actual scanner service similar to the original one, with a
version suffix appended. (199bbf7)
* Rename source and binary packages so they don't conflict with old
media scanner. (9cc7474)
* Add remaining MediaFile properties to QML wrapper. (07ec732)
* Explicitly set ownership of MediaFileWrapper objects. (451e5b5)
2013-12-17 James Henstridge
* Version the QML plugin package and installation dir. (0502985)
* Correctly namespace the QML file. (a6a307b)
* Depend on qtdeclarative5-dev too. (397e1e3)
* Update packaging to cover QML plugin, and set plugin version to
0.1. (4a2b4d3)
2013-12-16 James Henstridge
* Expose a bit more through the MediaFile wrapper, and expose media
type through MediaStore.query(). (46d7a52)
2013-12-15 James Henstridge
* Add qmldir file, and update wrapper constructors. (7b2c29b)
2013-12-14 James Henstridge
* Use automoc for mediascanner-qml target. (4ae1d9b)
2013-12-13 James Henstridge
* Split out into separate files. (8896575)
* Skeleton QML wrapper for MediaStore class. (0898b18)
2013-12-03 James Henstridge
* In SubtreeWatcher, ignore inotify events for watches we are no
longer interested in. (e69a696)
* Run the test suite in series, and always include the test output in
the build log. (e36368e)
* Ignore inotify events directed at unknown watches. This can happen
when there are queued events for watches we've since
removed. (23661b2)
2013-12-02 Jussi Pakkanen
* Made MediaFile immutable. (6a0df57)
* Fixed initialisation order. (d8d58c4)
* Use initialisers in a constructor. (ce1f2be)
* Make MediaFileBuilder take the filename in a constructor because
that is mandatory. (1ced6b7)
* Return of getUri. (b160c65)
2013-12-01 Jussi Pakkanen
* Use EXPECT_TRUE/FALSE instead of EXPECT_EQ(true/false, ...).
(8b13f3b)
2013-11-29 Jussi Pakkanen
* Use EXPECT_TRUE/FALSE. (c4c42fe)
* Removed unnecessary includes. (f4ab443)
2013-11-28 Jussi Pakkanen
* Capitalisation fix. (443551c)
* Update tests. (3ab9e33)
* Merged trunk. (d1eb1cb)
2013-11-28 James Henstridge
* Store the etag of files in the MediaStore so the scanner can detect
whether it is necessary to redo the metadata extraction on
files on start up. (5a291dc)
2013-11-28 Jussi Pakkanen
* Made MediaFiles immutable. (5003765)
* Finish MFBuilder. (5f651a9)
* Some setter functions. More to come. (e64a8ac)
* Started creating an mfbuilder class. (b2aaa1e)
2013-11-28 James Henstridge
* Add a test for the skipping of changed metadata. This really needs
access to some scannerdaemon.cc methods to be more robust.
(1f85ad3)
* Add a MediaStore.lookup() method to look up metadata by a file
name. (8a61978)
* Have MetadataExtractor.detect() return a DetectedFile struct, and
have MetadataExtractor.extract() convert that to a
MediaFile. (2fdbbea)
2013-11-27 James Henstridge
* Rather than opening files for read access in
MediaScanner.pruneDeleted(), just check if the file exists
with access(). (f8dde9e)
* Only perform metadata extraction if the file has changed. (8d89f26)
2013-11-26 James Henstridge
* Add a MediaStore.getETag() routine to get the stored etag for a
file name, if it exists. (fa66f08)
* Make MetadataExtractor.extract() annotate a MediaFile rather than
create a new one. (b60ca09)
* Delete the media_fts table in the upgrade logic. (3854001)
* Convert Scanner.scanFiles() to use MetadataExtractor.detect()
instead of FileTypeDetector. (6ce0d8c)
2013-11-25 James Henstridge
* Remove some includes of FileTypeDetector.hh in tests. (b146269)
* Rename MetadataExtractor.stat() to detect(), and make it use the
fast content type. (65062f1)
* Move GFile logic into MetadataExtractor so we can record the
content type and etag. Expose this as a separate entry
point so that we can extract this data without continuing
on to the expensive metadata extraction. (34eee75)
* Store content type and etag in MediaStore. (a568be9)
* Add content_type and etag members to MediaFile (21eba0d)
2013-11-23 James Henstridge
* Add a constructor for MediaStore that opens the default database.
This removes the need for users of the client locate the
library themselves. (9c906dc)
2013-11-22 James Henstridge
* Update the query test program to open the default database. The
MEDIASCANNER_CACHE environment variable can be used to
point it at different databases. (1a0bd82)
* Make the scanner daemon open the default database, and look up the
user's music and videos directories using the XDG user
dirs spec for better i18n support. (989a7fa)
* Add a second constructor that opens the default database. (40d2dc1)
2013-11-21 James Henstridge
* Add a ranking function based on the one in the SQLite documentation
(http://sqlite.org/fts3.html#appendix_a), and use it to
rank the results of MediaStore.query(). (5f7fc24)
* Add a test to show that the ranking is being applied and weights
matches in the various fields correctly. (0031b19)
2013-11-20 James Henstridge
* Add tests to show that searches by artist or album name work.
(cff6b64)
* Introduce a ranking function and use it for query(). (b04679b)
2013-11-18 Jussi Pakkanen
* Pass test defines through a header file rather than command line
arguments. (d8d8102)
2013-11-18 James Henstridge
* Add a method to get a URI for a MediaFile instance. (6143040)
2013-11-15 James Henstridge
* Ignore files created by package build. (623877c)
* Update copyright file. (6f71c0e)
* pc file is in binary dir. (bc34faf)
2013-11-14 James Henstridge
* Add pkg-config file for mediascanner. (f7ba5e0)
* Add test video files from old media scanner code base. (db1afc0)
* Move metadata extractor tests into a separate file. (4589de4)
* Move test data to test/media/ (884d260)
2013-11-13 James Henstridge
* Separate out MediaStore related tests into a separate test program
that doesn't link with the scanner daemon code. (489838a)
* Use preprocessor defines to pass source/build dir to test rather
than environment variables. This lets us easily run the
tests directly. (53f5245)
* Convert tokenizer registration over to using Statement helper
class. (3633feb)
* Add license text to branch. (bb3dab8)
* Remove unnecessary includes. (2034ad4)
* Push LDFLAGS to the various libraries rather than repeating them
for each executable. (a979229)
* Fix up packaging to include dev package. (c4998ad)
2013-11-12 James Henstridge
* Add README for sqlite tokenizer from Mozilla tree. (6d3e492)
* install daemon to CMAKE_INSTALL_BINDIR (c393b23)
* Move utils. (2dacba7)
* Move files related to actual scanning to src/daemon, so
src/mediascanner only deals with metadata storage and
retrieval: scanning and extraction is the responsibility
of the daemon. (7bdd70b)
* Move daemon to src/daemon/ (0b5db2d)
* Move the media scanner library code to a separate directory to try
and separate out what represents the public API. (ee00a56)
2013-11-11 James Henstridge
* Add tests for album query interface. (8feb5a6)
2013-11-08 James Henstridge
* Add MediaStore methods to search albums. (0fe1a46)
2013-11-07 James Henstridge
* CMake fixes suggested by Jussi. (f4a16e6)
* Round trip additional music metadata. (49b2d73)
* More updates. (2f94efb)
* Port insert() over to bound parameters. (5e359b6)
* Convert query() and pruneDeleted() over to using bound parameters.
(78eca83)
* Convert some queries over to using helper class. (a03dc95)
* Add small helper class to help run sqlite statements with bound
parameters. (e07a0bd)
2013-11-06 Jussi Pakkanen
* Some .bzrignore. (b15cbc3)
* Check system exit value. (7e536bc)
* Something2. (3eaccf9)
* Something. (6d12dec)
* A few polishing fixes. (5f76d88)
* Test extractor in isolation. (440b0b9)
* Test detector. (30e49e7)
* Cleanupping. (3d39247)
* For great destruction. (84e530b)
* Subtreewatcher pimpl. (f51a571)
* Test that subdirectory deletion is properly detected. (606bc45)
* Quote test. (8552cdc)
* Add util test. And also an off-by-one fix. (510d473)
* Merged changes. (c1f85ca)
* Use gtest. (5100fa4)
2013-11-06 James Henstridge
* Extract date and track number via GStreamer. Not yet stored in
database. (72ec25b)
2013-11-06 Jussi Pakkanen
* A dep fix. (0fb212b)
2013-11-05 Jussi Pakkanen
* Packaging now works. (e5b89df)
* Some basic packaging. (b73b737)
* Use own assert that works even when NDEBUG is defined. (fb2977b)
2013-11-04 Jussi Pakkanen
* Removed unused mediaroot table remains. (d2b23fd)
* Store schema version id in the database to prevent apps from using
old data by accident. (b8ec8e7)
* Build uris correctly. Again. (fd7df1f)
* Gave MetadataExctractor its own private struct. (3b93448)
2013-11-04 James Henstridge
* Merge in MetadataExtractor changes from last week that didn't get
pushed correctly. (3df6fc8)
2013-11-01 Jussi Pakkanen
* Use std::string searcher rather than strncmp. (d7940c0)
2013-10-31 Jussi Pakkanen
* A few more finals. (8fbd118)
* Vestigial stuff removal. (ad3269d)
* Test metadataextractor. (2390c9b)
* More hidden file ignoring. (db3bd00)
* Made classes final. (60966b0)
* Build gstreamer URIs correctly. (07612f8)
* Made metadata extractor a class. (c3a5936)
* Only traverse subtrees once. (6bcbbf5)
2013-10-31 James Henstridge
* Share the GstDiscoverer between metadata extractions. (8e801a6)
2013-10-31 Jussi Pakkanen
* Some cleanups. (d8e6c02)
2013-10-31 James Henstridge
* Use GIO to query the content type to determine file type rather
than working on a small set of file extensions. (1be0cba)
* Don't bail if the /media/$user directory doesn't exist. This means
mount monitoring won't work, but it allows the home
directory to be scanned. (404a339)
2013-10-30 Jussi Pakkanen
* Use enum instead of boolean. (8d33f2f)
* Can open db as read only. (8659e2f)
* Added mounting test. (1b9a9c2)
* Remnant removing. (591daed)
* More work on single table. (01d975e)
* Experiment to use media attic for files that get unmounted.
(d42525a)
* Store more info in exception message. (f7957cb)
* Throw actual exceptions. (1d2aa06)
2013-10-29 Jussi Pakkanen
* Tests pass again. (c768548)
* More work on single media table. (537b251)
* Started work on moving to a single table. (e790a40)
2013-10-28 Jussi Pakkanen
* Cleanup. (c191332)
* Test that query round trips work. (4d31f56)
* Comparison and tests. (14ef3fd)
* External db fix. (08e4913)
* Moved search inside MediaStore. (2bf9c3d)
* Added coverage support. (083e4b2)
2013-10-25 Jussi Pakkanen
* Check that files removed and added during downtime are processed.
(44d7a5f)
* Test that subdir tracking works. (46601a1)
* Initialize and check that added files are really added. (a6be80c)
* Cleanup. (381773c)
* A basic indexing test. (8ecaeb1)
* Delete from videos too. (392266f)
* Trigger fix. (7c81e10)
* Created test audio file. (c69069a)
* Test subtreewatcher initialisation too. (028e320)
* Added a test. (582c252)
* Moved files into src subdirectory. (f999f97)
2013-10-25 James Henstridge
* Import the tokenizer used by Mozilla's Gloda search index.
(d95c747)
2013-10-24 Jussi Pakkanen
* Can query stuff. (0ec2f87)
* Write generated data to db. (705bc1c)
* Create scalability tester app. (dd8d981)
* Use reference instead of pointer. (b50537e)
2013-10-23 Jussi Pakkanen
* Some unique_ptr lovin. (ab825ee)
* Do video queries too. (c99ade3)
* Through the wonders of SQL magic you can now do queries again.
(7e39b01)
* Put duration to backing store. (0089cc5)
* Reworked backing store. (8ff61af)
2013-10-23 James Henstridge
* Convert getMetadata() over to using GstDiscoverer. (41ab823)
2013-10-23 Jussi Pakkanen
* Let's noexcept love. (ad2c2f5)
* Do not store duration yet. Need to figure out table details.
(3d6c439)
* Determine duration of files. (a10214d)
2013-10-22 Jussi Pakkanen
* Watch for changes in backend files. (5354e5c)
* Store db files in .cache. (7eb3aa0)
* Mount dir fixing. (ef54191)
2013-10-21 Jussi Pakkanen
* Palm of face. (4bba8bd)
* Use unique_ptrs. (6e2da35)
* Close inotify fd. (9169028)
2013-10-18 Jussi Pakkanen
* Query mounted volumes too, if they exist. (3faacee)
* Query multiple directories. (337e5d6)
* Use readdir_r. (d3f0452)
* Unique_ptring. (032a3a2)
* Use readdir_r. (958e7a4)
* Do not add same subdir several times. (6c5a987)
* Add those volumes that are already mounted. (d8afc06)
* Watch mounts and unmounts. (06c600f)
* Made function method. (254ea23)
* Can watch arbitrary number of subdirectories. (3cd4bb1)
* Made daemon into a dynamic class. (06a18cb)
* Query video results, too. (74bb301)
* Build title from file name if it is missing. (5352765)
* Basic support for video files. (df10bb3)
* Do not archive hidden files. (3c6a0ba)
2013-10-17 Jussi Pakkanen
* Fffafaffafddddh. (25e2afd)
* Micro-optimisation. (9f64107)
* Detect files that have been deleted while scanner was down.
(55a7078)
* Added SQL quote function. (653737c)
* Renamed exe. (1a0fe68)
* Made scannerdemo work daemon-like. (3982603)
* Make subtreewatcher runnable from the outside. (2450f9d)
* No longer delete mediastore on start. (a0f444a)
* Better error diagnostics. (96dcc34)
2013-09-04 Jussi Pakkanen
* Some initialization. (c361d16)
2013-09-03 Jussi Pakkanen
* Better error text. (68ae9d3)
* Store artist name if it is known. (f6303ce)
* Can haz query results. (7f03b3b)
* Return dummy data. (eee21f8)
* Basic scope skeleton works. (605d3c9)
* Scope experiment starts now. (f615023)
2013-08-30 Jussi Pakkanen
* Can delete and query files. (1209664)
* Consting. (8847edb)
* Measure size and print it. (dabf7e1)
* Do not run file system watcher for the time being. (e0b3d18)
* Use only one query. (ae6cebf)
* Open in read only mode. (a5dcea7)
* Added query src file to bzr too. (7f57780)
* Can haz queries. (c1362d7)
* Put data into backing store. (cc5d14f)
* Create a backing db. (af90bb1)
2013-08-05 Jussi Pakkanen
* Typo fix from jamesh. (7ddba8b)
2013-07-12 Jussi Pakkanen
* Comment. (692a2fb)
* Close dirs after traversal. (a45cad9)
* Betterer meta data. (9a201dc)
* Use exceptions for errors. (dc572b0)
* Putting pieces together. (f8193a1)
* Renamed exe. (e19b5d4)
* Work work work. (96fe2d4)
* Moved subtreewatcher to a class file. (f6d3250)
2013-07-10 Jussi Pakkanen
* Even more cleanups. (c25100b)
* Even more inotify flag mangling. (3758f93)
* Inotify flag cleanup. (0557a46)
* Update watch subscriptions as subdirs come and go. (70eb86f)
* Refactoring. (cef76ee)
* Print what is happening. (1e752ea)
* Watch for it. (fdae716)
* Initialise and shutdown inotify. (1b84d50)
* Started on subtree change watcher. (1fc0e98)
* Extract meta data properly. (090e18a)
* Started work on GStreamer based metadata extractor. (d8d8c98)
2013-07-09 Jussi Pakkanen
* Can store and query for media files. (38919ab)
* Created MediaFile class. (18f062c)
* Do not crash. Which is always nice. (21c5333)
* Created a test app to watch for mounted files. (f57587c)
* Something. (2dead3a)
* Created a simple file type autodetector. (97f72ff)
* Can traverse subdirs. (7b75e38)
* Started work on scanning experiment. (bcd1aa3)
mediascanner2-0.115/HACKING 0000664 0000000 0000000 00000001151 14367552500 0015227 0 ustar 00root root 0000000 0000000 Building the code
-----------------
The list of packages required to build mediascanner can be found in
the Build-Depends stanza of the debian/control.in file. In addition
to those packages, you should install "qt5-default" to ensure that the
Qt 5.x versions of build tools are used in preference to the Qt 4.x
versions.
The software can then be built with the following commands:
$ mkdir build
$ cd build
$ cmake ..
$ make
The tests can then be run using:
$ make test
Note that "make test" will not trigger a rebuild, so it is necessary
to rerun "make" first if any code has been changed.
mediascanner2-0.115/debian/ 0000775 0000000 0000000 00000000000 14367552500 0015464 5 ustar 00root root 0000000 0000000 mediascanner2-0.115/debian/Jenkinsfile 0000664 0000000 0000000 00000000651 14367552500 0017652 0 ustar 00root root 0000000 0000000 @Library('ubports-build-tools') _
buildAndProvideDebianPackage()
// Or if the package consists entirely of arch-independent packages:
// (optional optimization, will confuse BlueOcean's live view at build stage)
// buildAndProvideDebianPackage(/* isArchIndependent */ true)
// Optionally, to skip building on some architectures (amd64 is always built):
// buildAndProvideDebianPackage(false, /* ignoredArchs */ ['arm64'])
mediascanner2-0.115/debian/changelog 0000664 0000000 0000000 00000057731 14367552500 0017353 0 ustar 00root root 0000000 0000000 mediascanner2 (0.115) unstable; urgency=medium
* Upstream-provided Debian package for mediascanner2. See upstream
ChangeLog for recent changes.
-- UBports developers Sat, 04 Feb 2023 22:57:09 +0100
mediascanner2 (0.114+0ubports0) xenial; urgency=medium
* Remove Bileto pre-release hook
-- Dalton Durst Wed, 21 Aug 2019 17:19:22 -0500
mediascanner2 (0.113+ubports) xenial; urgency=medium
* Imported to UBports
-- UBports auto importer Fri, 12 Jan 2018 12:57:53 +0000
mediascanner2 (0.112+17.04.20170322-0ubuntu1) zesty; urgency=medium
* Only run mediascanner in unity8.
-- Michael Terry Wed, 22 Mar 2017 15:23:21 +0000
mediascanner2 (0.112+17.04.20170302-0ubuntu1) zesty; urgency=medium
* Compatibility with unversioned cmake-extras modules (LP: #1563573)
* Add SystemD session files
-- Pete Woods Thu, 02 Mar 2017 10:42:36 +0000
mediascanner2 (0.112+17.04.20161201-0ubuntu1) zesty; urgency=medium
[ James Henstridge ]
* Correctly detect embedded art in Vorbis files with TagLib 1.11.
[ Michael Terry ]
* Handle running inside of a snap by respecting the $SNAP variable.
(LP: #1629009)
-- James Henstridge Thu, 01 Dec 2016 09:07:15 +0000
mediascanner2 (0.112+16.10.20160909-0ubuntu1) yakkety; urgency=medium
[ James Henstridge ]
* When multiple volumes are mounted in quick succession, scan them
serially to avoid reentrancy problems in the initial scan. (LP:
#1489656)
* Add apparmor-easyprof hardware directories to package so AppArmor
profile can compile when apparmor-easyprof-ubuntu isn't installed.
(LP: #1443693)
* Disable optimisation when compiling dbus-codec.cc to avoid gcc 6
compilation bug. (LP: #1621002)
* Replace deprecated use of GetConnectionAppArmorSecurityContext
method with GetConnectionCredentials. (LP: #1489489)
[ You-Sheng Yang ]
* Update mediascanner-extractor apparmor profile to cover Android
library locations on 64-bit systems.
-- James Henstridge Fri, 09 Sep 2016 13:46:43 +0000
mediascanner2 (0.111+16.10.20160526-0ubuntu1) yakkety; urgency=medium
[ Alex Tu ]
* apparmor: extend read permissions to cover media_codecs*.xml to
support Turbo.
[ Robert Bruce Park ]
* Use new bileto_pre_release_hook.
-- James Henstridge Thu, 26 May 2016 06:02:56 +0000
mediascanner2 (0.111+16.04.20160317-0ubuntu1) xenial; urgency=medium
* If a file is unscannable, insert a fallback MediaFile into the index
immediately, rather than relying on it being added by the
broken_files logic on next startup.
-- James Henstridge Thu, 17 Mar 2016 03:24:55 +0000
mediascanner2 (0.111+16.04.20160225-0ubuntu1) xenial; urgency=medium
[ James Henstridge ]
* Batch index updates during the initial scan in 10 second intervals
(the same rate as invalidation notifications go out). This greatly
reduces the IO overhead on initial startup, and is fairly safe now
we have out of process metadata extraction.
* Don't emit the InvalidateResults signal if a file was opened for
writing and then closed, but not actually modified (LP: #1542175)
* Favour the EXIF DateTimeOriginal tag over DateTime when extracting
metadata from photos. (LP: #1468585)
* Use taglib to extract metadata from Vorbis, Opus, Flac, MP3 and MP4
audio files. Other formats will fall back to the existing GStreamer
code path. (LP: #1536832)
[ CI Train Bot ]
* debian/libmediascanner-2.0-3.symbols: update to released version.
-- James Henstridge Thu, 25 Feb 2016 01:53:33 +0000
mediascanner2 (0.110+16.04.20151216-0ubuntu1) xenial; urgency=medium
[ James Henstridge ]
* Fix up handling of directory renames, so old contents is correctly
removed from the index and inotify watches for subdirectories are
cleaned up. (LP: #1460411)
* If the mediascanner index can not be opened, catch the exception in
the QML plugin and act as if the database is empty. A warning is
printed via Qt's logging framework. This prevents QML apps using
mediascanner from terminating if there is a problem opening the
media index. (LP: #1514517)
[ CI Train Bot ]
* debian/libmediascanner-2.0-3.symbols: update to released version.
-- James Henstridge Wed, 16 Dec 2015 08:04:43 +0000
mediascanner2 (0.109+16.04.20151124.1-0ubuntu1) xenial; urgency=medium
[ James Henstridge ]
* If a folder contains an image file named
{cover,album,albumart,.folder,folder}.{jpeg,jpg,png} use it as album
art for songs in preference to online art if the songs do not have
embedded art. (LP: #1372000)
* Disable MountWatcher's callback during destruction so we don't call
back into a partially destroyed class. (LP: #1492393)
[ CI Train Bot ]
* debian/libmediascanner-2.0-3.symbols: update to released version.
* New rebuild forced.
-- James Henstridge Tue, 24 Nov 2015 08:56:52 +0000
mediascanner2 (0.108+16.04.20151109-0ubuntu1) xenial; urgency=medium
* Move the metadata extractor to a separate process to isolate bugs in
media codecs. (LP: #1508142)
-- James Henstridge Mon, 09 Nov 2015 01:56:39 +0000
mediascanner2 (0.108+16.04.20151102-0ubuntu1) xenial; urgency=medium
* Rename QML plugin package to qml-module-* and add transitional package
for upgrades. (LP: #1342031)
* Fix the metadata extractor so that it correctly extracts the date
and presence of cover art from MPEG 4 audio files. (LP: #1492407)
* Remove the id column from media_attic so that we don't get conflicts
when copying data between media and media_attic. (LP: #1501990)
-- James Henstridge Mon, 02 Nov 2015 02:52:43 +0000
mediascanner2 (0.107+15.10.20150922.1-0ubuntu1) wily; urgency=medium
[ James Henstridge ]
* Use a single source tree for the gcc 4.x/5.x builds.
[ CI Train Bot ]
* No-change rebuild.
-- James Henstridge Tue, 22 Sep 2015 12:11:11 +0000
mediascanner2 (0.106+15.10.20150917-0ubuntu1) wily; urgency=medium
[ James Henstridge ]
* Store the file modification time in the media database so we can
find recently added media.
* Add a hasMedia() method to MediaStore, which returns true if there
is any media of the given type.
[ CI Train Bot ]
* debian/libmediascanner-2.0-3.symbols: update to released version.
* New rebuild forced.
-- Pawel Stolowski Thu, 17 Sep 2015 12:03:39 +0000
mediascanner2 (0.105+15.10.20150721-0ubuntu2~ppa1) wily; urgency=medium
* Update symbols file for GCC 5.
* Tighten build dependency on libdbus-cpp-dev.
-- Matthias Klose Tue, 21 Jul 2015 16:07:06 +0200
mediascanner2 (0.105+15.10.20150721-0ubuntu1) wily; urgency=medium
[ James Henstridge ]
* Remove the hard dependency on g++-4.9. (LP: #1452332)
-- CI Train Bot Tue, 21 Jul 2015 05:13:08 +0000
mediascanner2 (0.105+15.10.20150604-0ubuntu1) wily; urgency=medium
[ James Henstridge ]
* Treat invalid dates in MP3s as missing metadata. (LP: #1436110)
-- CI Train Bot Thu, 04 Jun 2015 06:51:43 +0000
mediascanner2 (0.105+15.04.20150128-0ubuntu1) vivid; urgency=low
[ Jussi Pakkanen ]
* Revert use of WAL log and instead try to rerun queries that fail
with SQLITE_BUSY. (LP: #1415318)
-- Ubuntu daily release Wed, 28 Jan 2015 12:59:06 +0000
mediascanner2 (0.105+15.04.20150127-0ubuntu1) vivid; urgency=low
[ Jussi Pakkanen ]
* Send invalidations signals during scans that take a long time so the
dash gets updated. (LP: #1414566)
-- Ubuntu daily release Tue, 27 Jan 2015 14:28:29 +0000
mediascanner2 (0.105+15.04.20150122-0ubuntu1) vivid; urgency=low
[ Jussi Pakkanen ]
* Add blacklist functionality and use it to block music playlists.
(LP: #1384295)
* Skip scanning of special directories if they point to user home dir.
(LP: #285998)
-- Ubuntu daily release Thu, 22 Jan 2015 10:18:10 +0000
mediascanner2 (0.105+15.04.20150121-0ubuntu1) vivid; urgency=low
[ Jussi Pakkanen ]
* Extract metadata from images that don't have exif entries. (LP:
#1378880)
* Make Valgrind uninitialised jump warning go away.
-- Ubuntu daily release Wed, 21 Jan 2015 15:21:18 +0000
mediascanner2 (0.105+15.04.20141030.1-0ubuntu1) vivid; urgency=low
[ James Henstridge ]
* When a new directory is added and a new inotify watch is set up,
call fileAdded() on any regular files already in the directory so
they are not missed. (LP: #1379817)
-- Ubuntu daily release Thu, 30 Oct 2014 11:23:12 +0000
mediascanner2 (0.105+14.10.20141001-0ubuntu1) utopic; urgency=low
[ James Henstridge ]
* Use udisksd to track mounts and unmounts of removable media. (LP:
#1358750)
-- Ubuntu daily release Wed, 01 Oct 2014 06:59:45 +0000
mediascanner2 (0.105+14.10.20140925.1-0ubuntu1) utopic; urgency=low
[ Jussi Pakkanen ]
* Print banner when starting the daemon so upstart logs are easier to
parse.
* Use fallback data for crasher files so they at least show up in
scope queries.
-- Ubuntu daily release Thu, 25 Sep 2014 11:58:02 +0000
mediascanner2 (0.105+14.10.20140909-0ubuntu1) utopic; urgency=low
[ Jussi Pakkanen ]
* Print a log message when skipping a broken file.
[ Jamie Strandboge ]
* debian/usr.bin.mediascanner-service-2.0: add video abstraction.
silence access to /run/udev/data/** like we do elsewhere. allow read
on /dev/video*. allow read on /sys/devices/**/video4linux/**/uevent
.
-- Ubuntu daily release Tue, 09 Sep 2014 08:41:03 +0000
mediascanner2 (0.105+14.10.20140903-0ubuntu1) utopic; urgency=medium
[ James Henstridge ]
* Record whether files contain embedded artwork in the media index.
* Use this info to generate art URIs that either use embedded artwork,
or the network based albumart provider.
* Expose embedded album art for Album objects too. Bump soname to
account for Album class changing size.
[ Ubuntu daily release ]
* debian/libmediascanner-2.0-3.symbols: auto-update to released
version
* New rebuild forced
[ Jussi Pakkanen ]
* Fix usage of blocking cache.
-- Ubuntu daily release Wed, 03 Sep 2014 11:46:24 +0000
mediascanner2 (0.104+14.10.20140825-0ubuntu1) utopic; urgency=medium
[ James Henstridge ]
* Add support for custom sort orders in query(), queryAlbums() and
queryArtists() methods. This breaks the ABI, so bump soname.
* Update AppArmor policy to allow read access to
/sys/devices/**/video4linux/video** (LP: #1353139)
[ Ubuntu daily release ]
* debian/libmediascanner-2.0-2.symbols: auto-update to released
version
[ Jussi Pakkanen ]
* Fix inotify usage.
* Store information on files that break GStreamer and skip them when
encountered.
* Don't call closedir with a null argument.
* Add database integrity constraints.
[ Jamie Strandboge ]
* allow read access to /etc/udev/udev.conf for gstreamer (LP:
#1356883) (LP: #1356883)
-- Ubuntu daily release Mon, 25 Aug 2014 12:52:17 +0000
mediascanner2 (0.103+14.10.20140819-0ubuntu1) utopic; urgency=low
[ Jussi Pakkanen ]
* Apparmor fix from jdstrand. (LP: #1357348)
-- Ubuntu daily release Tue, 19 Aug 2014 12:52:52 +0000
mediascanner2 (0.103+14.10.20140815.1-0ubuntu1) utopic; urgency=medium
[ Dimitri John Ledkov ]
* Add missing dependencies to libmediascanner-2.0-dev package. (LP:
#1351358)
[ James Henstridge ]
* Automatically update models when the daemon sends the
InvalidateResults D-Bus signal. Add a status property to models to
let loading progress be tracked. Rename rowCount property to count,
keeping the old name around for compatibility. (LP: #1347444)
[ Jussi Pakkanen ]
* Minor fixes for libc++.
* Handle the case when /media/username does not exist when
Mediascanner first starts up. (LP: #1354543)
-- Ubuntu daily release Fri, 15 Aug 2014 11:18:39 +0000
mediascanner2 (0.102+14.10.20140805-0ubuntu1) utopic; urgency=low
[ James Henstridge ]
* Fix off by one error when appending new rows to QML models. (LP:
#1350529)
-- Ubuntu daily release Tue, 05 Aug 2014 11:44:48 +0000
mediascanner2 (0.102+14.10.20140730.1-0ubuntu1) utopic; urgency=medium
[ Jussi Pakkanen ]
* Added an autopkgtest.
* Fixes for various issues found by flint++.
* Install Filter.hh.
* Archive items on unmount.
[ James Henstridge ]
* Stream data to the QML models in chunks through a background
thread using QtConcurrent.
The limit option on the various models has been removed, since we
the individual queries are smaller.
* Add MediaStore::queryArtists() method, needed for the new scope
design.
[ Ubuntu daily release ]
* debian/libmediascanner-2.0-1.symbols: auto-update to released
version
-- Ubuntu daily release Wed, 30 Jul 2014 10:49:39 +0000
mediascanner2 (0.101+14.10.20140724.1-0ubuntu1) utopic; urgency=medium
[ Alfonso Sanchez-Beato (email Canonical) ]
* Adjust apparmor configuration for MTK device
-- Ubuntu daily release Thu, 24 Jul 2014 11:15:33 +0000
mediascanner2 (0.101+14.10.20140721-0ubuntu1) utopic; urgency=low
[ Jussi Pakkanen ]
* Specify GCC 4.9 explicitly to prevent ABI breakage.
-- Ubuntu daily release Mon, 21 Jul 2014 14:16:51 +0000
mediascanner2 (0.101+14.10.20140715-0ubuntu1) utopic; urgency=low
* New rebuild forced
-- Ubuntu daily release Tue, 15 Jul 2014 14:03:12 +0000
mediascanner2 (0.101+14.10.20140702-0ubuntu1) utopic; urgency=low
[ James Henstridge ]
* Update the FTS tokenizer to work with SQLite 3.8.5, and reenable the
MediaStoreTest.query_short test. Bump libsqlite3-dev build
dependency to 3.8.5 too.
-- Ubuntu daily release Wed, 02 Jul 2014 08:07:49 +0000
mediascanner2 (0.101+14.10.20140627-0ubuntu3) utopic; urgency=medium
* apparmor: add missing proc file used by the mediatek soc
-- Ricardo Salveti de Araujo Tue, 01 Jul 2014 11:29:31 +0800
mediascanner2 (0.101+14.10.20140627-0ubuntu2) utopic; urgency=medium
* debian/usr.bin.mediascanner-service-2.0: couple more minor updates for
(mostly) noisy denials
- use consoles abstraction instead of just the pts interface since we need
/dev/tty when crashing
- finetune orcexec rules by allowing 'm' in /tmp but explicitly deny the
others
- allow non-owner read of @{PROC}/cmdline
- use attach_disconnected for /dev/socket/property_service
-- Jamie Strandboge Fri, 27 Jun 2014 14:59:34 -0500
mediascanner2 (0.101+14.10.20140627-0ubuntu1) utopic; urgency=medium
[ Jussi Pakkanen ]
* Disable short query test to work around a behavioral change in
SQLite.
-- Ubuntu daily release Fri, 27 Jun 2014 17:30:35 +0000
mediascanner2 (0.101+14.10.20140625-0ubuntu2) utopic; urgency=medium
* debian/usr.bin.mediascanner-service-2.0: updates for libhybris based on
work by Ricardo Salveti. (LP: #1334940)
-- Jamie Strandboge Fri, 27 Jun 2014 08:00:22 -0500
mediascanner2 (0.101+14.10.20140625-0ubuntu1) utopic; urgency=low
[ Ubuntu daily release ]
* debian/*symbols: auto-update new symbols to released version
[ James Henstridge ]
* Enable the QML plugin to pick between two MediaStore backends: the
direct disk backend and the D-Bus interface. The choice is made via
the MEDIASCANNER_USE_DBUS environment variable, and defaults to
direct access.
[ Jamie Strandboge ]
* * add AppArmor profile (LP: #1319065) - add
debian/usr.bin.mediascanner-service-2.0 - debian/control: Build-
Depends on dh-apparmor - debian/rules: update override_dh_installdeb
to use dh_apparmor - debian/mediascanner2.0.dirs: add etc/apparmor.d
- debian/mediascanner2.0.install: install profile in to place (LP:
#1319065)
[ CI bot ]
* * add AppArmor profile (LP: #1319065) - add
debian/usr.bin.mediascanner-service-2.0 - debian/control: Build-
Depends on dh-apparmor - debian/rules: update override_dh_installdeb
to use dh_apparmor - debian/mediascanner2.0.dirs: add etc/apparmor.d
- debian/mediascanner2.0.install: install profile in to place (LP:
#1319065)
-- Ubuntu daily release Wed, 25 Jun 2014 16:28:53 +0000
mediascanner2 (0.101+14.10.20140613-0ubuntu1) utopic; urgency=low
[ Ubuntu daily release ]
* debian/*symbols: auto-update new symbols to released version
[ James Henstridge ]
* Increase the timeout on D-Bus method calls. (LP: #1326753)
* Catch exceptions in the QML plugin, and print a warning instead. QML
applications terminate when C++ exceptions bubble up, which can not
be recovered from. (LP: #1326753)
* Add support for scanning photos using libexif. Adds libexif-dev as
new build dependency. (LP: #1256334)
-- Ubuntu daily release Fri, 13 Jun 2014 06:22:32 +0000
mediascanner2 (0.101+14.10.20140530-0ubuntu1) utopic; urgency=low
[ James Henstridge ]
* Get rid of the direct constructor for MediaFile, forcing creation to
go through MediaFileBuilder (which won't break when we add more
metadata fields).
Also move MediaFile fields to a private struct to avoid breaking ABI
in future when adding new metadata fields.
* Add a D-Bus service exposing the MediaStore, and move the QML binding
over to using it.
* Limit access to the MediaScanner D-Bus interface from confined
processes.
The trust-store API does not exist yet, so it just hard codes support
for the "com.ubuntu.music" application.
* Introduce a mediascanner::Filter type to hold search parameters for
the various MediaStore::list*() methods, and expand them to handle
genres. The new API also distinguishes between an unset filter and
a filter set to "". Make similar changes to the QML API, and add
notify signals to the rowCount properties.
(LP: #1319168, LP: #1319174).
[ Jussi Pakkanen ]
* Add support for .nomedia files to prevent chosen subtrees from being
scanned. (LP: #1294303).
* Fix a few warnings emitted by clang.
* Guard against empty MediaFileBuilders.
* Fix CMake Project name.
* Prune those files that have a scan block file on their path when
restoring.
-- Ubuntu daily release Fri, 30 May 2014 07:29:07 +0000
mediascanner2 (0.100+14.10.20140508-0ubuntu1) utopic; urgency=low
[ James Henstridge ]
* Add genre and discNumber metadata fields to the media index, and
expose it in the QML binding. Add rowCount property and get(row,
role) method to each of the model classes in the QML binding. (LP:
#1246172)
[ Jussi Pakkanen ]
* Don't scan optical discs.
* Use generator for file traversal instead of a vector.
-- Ubuntu daily release Thu, 08 May 2014 10:18:14 +0000
mediascanner2 (0.100+14.04.20140403-0ubuntu1) trusty; urgency=low
[ James Henstridge ]
* Remove the Unity scope found in src/utils: it looks like it has
suffered from bit rot and has never been used (we have unity-scope-
mediascanner instead). This also removes an unnecessary dependency
on the old libunity.
* Before using GStreamer to extract metadata from a file, print a log
message. This is intended to help track problems with metadata
extraction.
[ Jussi Pakkanen ]
* Avoid assert crash by not trying to unregister subvolumes that were
skipped due to looking like root subdirs. (LP: #1294193)
* The output value of stat is undefined when the stat call fails. So
don't use it.
-- Ubuntu daily release Thu, 03 Apr 2014 10:00:38 +0000
mediascanner2 (0.100+14.04.20140324-0ubuntu1) trusty; urgency=low
[ James Henstridge ]
* Expose an "art" role/property on album and song models, returning a
URI that can be used with a QML Image component. The actual image
provider comes from ubuntu-ui-toolkit.
-- Ubuntu daily release Mon, 24 Mar 2014 18:34:58 +0000
mediascanner2 (0.100+14.04.20140314-0ubuntu1) trusty; urgency=low
[ Jussi Pakkanen ]
* Keep going if inotify watch creation fails.
* Skip subdirectories that look like root directories.
* Delay signal handling initialisation.
-- Ubuntu daily release Fri, 14 Mar 2014 15:17:16 +0000
mediascanner2 (0.100+14.04.20140310-0ubuntu1) trusty; urgency=low
* New rebuild forced
-- Ubuntu daily release Mon, 10 Mar 2014 08:20:17 +0000
mediascanner2 (0.100+14.04.20140307.1-0ubuntu1) trusty; urgency=low
[ James Henstridge ]
* First stages of a QML plugin for the Media Scanner. At present it
only exposes the query() and lookup() interfaces.
* Relax the rules for tokenising the input when it ends with a short
token followed '*' wildcard. This allows us to produce results for
short strings when doing incremental searches.
* Convert the scanner daemon over to using the glib main loop rather
than a hand rolled one, and limit invalidation signals to be sent at
most once a second.
[ Jussi Pakkanen ]
* Add sqlite error string to exception.
* Shutdown cleanly on signals.
* Made SQLite db safe to access from multiple threads.
[ Michal Hruby ]
* Fix incorrect depends
-- Ubuntu daily release Fri, 07 Mar 2014 17:40:21 +0000
mediascanner2 (0.99+14.04.20140220-0ubuntu1) trusty; urgency=low
[ James Henstridge ]
* Add a limit argument to MediaStore::queryAlbums(), and ensure that
it returns some results when given an empty query string.
[ Jussi Pakkanen ]
* Added const qualifiers to methods and made album immutable just like
mediafile.
* Use lstat to avoid loops.
* Fix path where media cache is stored.
* Nil merge to get on the release train.
* Send invalidation signal once the db is fully populated.
-- Ubuntu daily release Thu, 20 Feb 2014 10:03:04 +0000
mediascanner2 (0.99+14.04.20140205-0ubuntu1) trusty; urgency=low
[ James Henstridge ]
* Add a limit argument to MediaStore::query(), and ensure that it
produces some results in response to an empty query.
[ Jussi Pakkanen ]
* Simple class for sending result set invalidation messages.
* Add a mediascanner namespace.
* Simpler header reorg.
[ CI bot ]
* Null merge to get changes through CITrain
-- Ubuntu daily release Wed, 05 Feb 2014 18:08:14 +0000
mediascanner2 (0.99+14.04.20140117-0ubuntu1) trusty; urgency=low
[ James Henstridge ]
* Fix a few issues that prevent the scanner daemon from running when
stdin is redirected to /dev/null.
* Fix the licensing on the public library so that it is correctly
labelled as LGPL, like the old mediascanner code base.
[ Ubuntu daily release ]
* Automatic snapshot from revision 197
-- Ubuntu daily release Fri, 17 Jan 2014 07:50:53 +0000
mediascanner2 (0.99+14.04.20140110-0ubuntu1) trusty; urgency=low
[ Jussi Pakkanen ]
* Hot new stuff
[ Ćukasz 'sil2100' Zemczak ]
* Automatic snapshot from revision 191 (bootstrap)
* We no longer ship any LGPL sources. Also, fix packaging naming in
some places - along with Vcs-*
[ Ubuntu daily release ]
* Automatic snapshot from revision 194
-- Ubuntu daily release Fri, 10 Jan 2014 14:18:01 +0000
mediascanner2-0.115/debian/control 0000664 0000000 0000000 00000005341 14367552500 0017072 0 ustar 00root root 0000000 0000000 Source: mediascanner2
Section: libs
Priority: optional
Maintainer: UBports Developers
Standards-Version: 3.9.6
Build-Depends: cmake,
cmake-extras (>= 0.10),
dbus,
debhelper-compat (= 12),
google-mock,
libapparmor-dev,
libdbus-1-dev,
libdbus-cpp-dev (>= 4.0.0),
libexif-dev,
libglib2.0-dev,
libgstreamer-plugins-base1.0-dev,
libgstreamer1.0-dev,
libgdk-pixbuf2.0-dev,
libgtest-dev,
libproperties-cpp-dev,
libsqlite3-dev (>= 3.8.5),
libtag1-dev,
libudisks2-dev,
lsb-release,
qml-module-qtquick2,
qml-module-qttest,
qtbase5-dev,
qtbase5-dev-tools,
qtdeclarative5-dev,
qtdeclarative5-dev-tools,
dh-apparmor,
# For running unit tests
gstreamer1.0-plugins-base,
gstreamer1.0-plugins-good,
shared-mime-info,
Homepage: https://gitlab.com/ubports/development/core/mediascanner2
Vcs-Git: https://gitlab.com/ubports/development/core/mediascanner2.git
Vcs-Browser: https://gitlab.com/ubports/development/core/mediascanner2
Package: libmediascanner-2.0-4
Architecture: any
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends},
Depends: ${misc:Depends},
${shlibs:Depends},
Recommends: mediascanner2.0
Description: Access library for the media scanner's index
This library provides convenient and safe access to the media scanner's
index files.
Package: mediascanner2.0
Architecture: any
Multi-Arch: foreign
Pre-Depends: ${misc:Pre-Depends},
Depends: gstreamer1.0-plugins-base,
gstreamer1.0-plugins-good,
dbus,
${misc:Depends},
${shlibs:Depends},
Description: Media scanner package
This package provides the media scanner service.
Package: libmediascanner-2.0-dev
Section: libdevel
Architecture: any
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends},
Depends: libmediascanner-2.0-4 (= ${binary:Version}),
libsqlite3-dev,
libglib2.0-dev,
${misc:Depends},
Description: Development files for libmediascanner
This package provides the infrastructure for using the media scanner's
access library in C++ based projects.
Package: qml-module-mediascanner0.1
Architecture: any
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends},
Depends: mediascanner2.0 (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: QML plugin for the Media Scanner
This package provides components that allow access to the media
scanner index from Qt Quick 2 / QML applications.
mediascanner2-0.115/debian/copyright 0000664 0000000 0000000 00000003714 14367552500 0017424 0 ustar 00root root 0000000 0000000 Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: mediascanner2
Source: https://launchpad.net/mediascanner2
Files: *
Copyright: 2013 Canonical Ltd.
License: GPL-3
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 3 as
published by the Free Software Foundation.
.
This program 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 General Public License for more details.
.
On Debian/Ubuntu systems, the full text of the GPL v3 can be found in
`/usr/share/common-licenses/GPL-3'
Files: src/mediascanner/* src/qml/*
Copyright: 2013 Canonical Ltd.
License: LGPL-3
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License Version 3.0 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.
.
On Debian/Ubuntu systems, the full text of the LGPL v3 can be found in
`/usr/share/common-licenses/LGPL-3'
Files: src/mediascanner/mozilla/fts*
Copyright: Public Domain
License: public-domain
The author disclaims copyright to this source code. In place of
a legal notice, here is a blessing:
.
May you do good and not evil.
May you find forgiveness for yourself and forgive others.
May you share freely, never taking more than you give.
Files: src/mediascanner/mozilla/Normalize.c
Copyright: Not stated
License: MPL-2.0
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
mediascanner2-0.115/debian/libmediascanner-2.0-4.install 0000664 0000000 0000000 00000000024 14367552500 0022626 0 ustar 00root root 0000000 0000000 usr/lib/*/lib*.so.*
mediascanner2-0.115/debian/libmediascanner-2.0-4.shlibs 0000664 0000000 0000000 00000000067 14367552500 0022453 0 ustar 00root root 0000000 0000000 libmediascanner-2.0 4 libmediascanner-2.0-4 (>= 0.111)
mediascanner2-0.115/debian/libmediascanner-2.0-dev.install 0000664 0000000 0000000 00000000066 14367552500 0023247 0 ustar 00root root 0000000 0000000 usr/include/*
usr/lib/*/lib*.so
usr/lib/*/pkgconfig/*
mediascanner2-0.115/debian/mediascanner2.0.dirs 0000664 0000000 0000000 00000000474 14367552500 0021225 0 ustar 00root root 0000000 0000000 etc/apparmor.d
# The apparmor profile depends on these directories that are usually
# populated by apparmor-easyprof-ubuntu. We don't depend on that
# package though, so make sure the directories exist.
usr/share/apparmor/hardware/audio.d
usr/share/apparmor/hardware/graphics.d
usr/share/apparmor/hardware/video.d
mediascanner2-0.115/debian/mediascanner2.0.install 0000664 0000000 0000000 00000000461 14367552500 0021726 0 ustar 00root root 0000000 0000000 usr/bin/mediascanner-service-2.0
usr/libexec/mediascanner-2.0/mediascanner-dbus-2.0
usr/libexec/mediascanner-2.0/mediascanner-extractor
usr/lib/systemd
usr/share/dbus-1/services/*
debian/usr.bin.mediascanner-service-2.0 etc/apparmor.d
debian/usr.lib.mediascanner-2.0.mediascanner-extractor etc/apparmor.d
mediascanner2-0.115/debian/qml-module-mediascanner0.1.install 0000664 0000000 0000000 00000000045 14367552500 0023775 0 ustar 00root root 0000000 0000000 usr/lib/*/qt5/qml/MediaScanner.0.1/*
mediascanner2-0.115/debian/rules 0000775 0000000 0000000 00000001346 14367552500 0016550 0 ustar 00root root 0000000 0000000 #!/usr/bin/make -f
# -*- makefile -*-
include /usr/share/dpkg/default.mk
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
export DPKG_GENSYMBOLS_CHECK_LEVEL=4
# http://ccache.samba.org/manual.html#_precompiled_headers
export CCACHE_SLOPPINESS=time_macros
export QT_SELECT=qt5
%:
dh $@
ifneq (,$(filter powerpc,$(DEB_HOST_ARCH)))
test_arg = || :
else
test_arg =
endif
override_dh_auto_test:
dh_auto_test --max-parallel=1 -- ARGS="--verbose" $(test_arg)
override_dh_installdeb:
dh_apparmor --profile-name=usr.bin.mediascanner-service-2.0 -pmediascanner2.0
dh_apparmor --profile-name=usr.lib.mediascanner-2.0.mediascanner-extractor -pmediascanner2.0
dh_installdeb
override_dh_missing:
dh_missing --fail-missing
mediascanner2-0.115/debian/tests/ 0000775 0000000 0000000 00000000000 14367552500 0016626 5 ustar 00root root 0000000 0000000 mediascanner2-0.115/debian/tests/control 0000664 0000000 0000000 00000000101 14367552500 0020221 0 ustar 00root root 0000000 0000000 Tests: msbuild
Depends: g++, pkg-config, libmediascanner-2.0-dev
mediascanner2-0.115/debian/tests/msbuild 0000775 0000000 0000000 00000001173 14367552500 0020215 0 ustar 00root root 0000000 0000000 #!/bin/sh
# Build a test program using libmediascanner.
# (C) 2014 Canonical Ltd.
# Authors: Jussi Pakkanen
set -e
WORKDIR=$(mktemp -d)
trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM
cd $WORKDIR
cat < mstest.cpp
#include
#include
int main(int argc, char **argv) {
mediascanner::MediaFileBuilder mfb("dummy");
mediascanner::MediaFile mf(mfb);
return 0;
}
EOF
g++ -std=c++11 -o msbin mstest.cpp `pkg-config --cflags --libs mediascanner-2.0`
echo "Mediascanner build: OK"
[ -x msbin ]
./msbin
echo "Mediascanner run: OK"
mediascanner2-0.115/debian/usr.bin.mediascanner-service-2.0 0000664 0000000 0000000 00000005004 14367552500 0023351 0 ustar 00root root 0000000 0000000 #include
/usr/bin/mediascanner-service-2.0 (attach_disconnected) {
#include
#include
#include
#include
#include
#include
#include
#include
#include
deny /dev/cpuctl/apps/tasks w,
deny /dev/cpuctl/apps/bg_non_interactive/tasks w,
@{PROC}/interrupts r,
@{PROC}/cmdline r,
owner @{PROC}/[0-9]*/auxv r,
owner @{PROC}/[0-9]*/fd/ r,
owner @{PROC}/[0-9]*/status r,
owner @{PROC}/[0-9]*/task/ r,
owner @{PROC}/[0-9]*/task/[0-9]*/ r,
owner @{PROC}/[0-9]*/cmdline r,
/etc/udev/udev.conf r,
deny /run/udev/data/** r,
ptrace (read) peer=@{profile_name},
# attach_disconnected path
/{,dev/}socket/property_service rw,
# Android logging triggered by platform. Can safely deny
deny /dev/log_main w,
deny /dev/log_radio w,
deny /dev/log_events w,
deny /dev/log_system w,
/usr/bin/mediascanner-service-2.0 r,
# Allow read on all directories
/**/ r,
# Allow read on click install directories, removable media and files in
# /usr/local/share.
/usr/share/** r,
/usr/local/share/** r,
/{media,mnt,opt,srv}/** r,
# Allow reading any files in non-hidden directories
owner @{HOME}/[^.]* rk,
owner @{HOME}/[^.]*/ rk,
owner @{HOME}/[^.]*/** rk,
# Allow reading files in XDG directories (ie, where apps are allowed to
# write)
owner @{HOME}/.config/user-dirs.dirs r,
owner @{HOME}/.cache/** rk,
owner @{HOME}/.local/share/** rk,
owner /{,var/}run/user/[0-9]*/** rk,
# Write out the database files
owner @{HOME}/.cache/mediascanner-2.0/ rw,
owner @{HOME}/.cache/mediascanner-2.0/** rwkl,
# Allow communication with udisksd
dbus (send)
bus=system
path="/org/freedesktop/UDisks2*"
interface="org.freedesktop.DBus.ObjectManager"
member=GetManagedObjects,
dbus (send)
bus=system
path="/org/freedesktop/UDisks2*"
interface="org.freedesktop.DBus.Properties"
member={Get,GetAll},
dbus (receive)
bus=system
interface="org.freedesktop.DBus.ObjectManager",
dbus (receive)
bus=system
interface="org.freedesktop.DBus.Properties",
dbus (receive)
bus=system
interface="org.freedesktop.UDisks2*",
# Site-specific additions and overrides. See local/README for details.
#include
}
mediascanner2-0.115/debian/usr.lib.mediascanner-2.0.mediascanner-extractor 0000664 0000000 0000000 00000007535 14367552500 0026365 0 ustar 00root root 0000000 0000000 #include
/usr/libexec/mediascanner-2.0/mediascanner-extractor (attach_disconnected) {
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "/usr/share/apparmor/hardware/audio.d"
#include "/usr/share/apparmor/hardware/graphics.d"
#include "/usr/share/apparmor/hardware/video.d"
deny /dev/cpuctl/apps/tasks w,
deny /dev/cpuctl/apps/bg_non_interactive/tasks w,
@{PROC}/interrupts r,
@{PROC}/cmdline r,
owner @{PROC}/[0-9]*/auxv r,
owner @{PROC}/[0-9]*/fd/ r,
owner @{PROC}/[0-9]*/status r,
owner @{PROC}/[0-9]*/task/ r,
owner @{PROC}/[0-9]*/task/[0-9]*/ r,
owner @{PROC}/[0-9]*/cmdline r,
/etc/udev/udev.conf r,
deny /run/udev/data/** r,
# specific to the mediatek soc
@{PROC}/xlog/setfil r,
@{PROC}/M4U_device r,
/dev/Vcodec rw,
/sys/bus/platform/drivers/** rw,
/{,android/}system/etc/mtk_omx_core.cfg r,
/dev/devmap r,
@{PROC}/mtk_mdp_cmdq r,
/dev/video* r,
/sys/devices/**/video4linux/video** r,
/sys/devices/**/video4linux/**/uevent r,
/sys/kernel/debug/tracing/trace_marker w,
/dev/ashmem rw,
ptrace (read) peer=@{profile_name},
# libhybris
/{,var/}run/shm/hybris_shm_data rw,
/usr/lib/@{multiarch}/libhybris/*.so mr,
/{,android/}system/build.prop r,
/dev/__properties__/{,*} r,
# These libraries can be in any of:
# /vendor/lib{,64}
# /system/lib{,64}
# /system/vendor/lib{,64}
# /android/vendor/lib{,64}
# /android/system/lib{,64}
# /android/system/vendor/lib{,64}
/{,android/}vendor/lib{,64}/** r,
/{,android/}vendor/lib{,64}/**.so m,
/{,android/}system/lib{,64}/** r,
/{,android/}system/lib{,64}/**.so m,
/{,android/}system/vendor/lib{,64}/** r,
/{,android/}system/vendor/lib{,64}/**.so m,
# attach_disconnected path
/{,dev/}socket/property_service rw,
# Android logging triggered by platform. Can safely deny
deny /dev/log_main w,
deny /dev/log_radio w,
deny /dev/log_events w,
deny /dev/log_system w,
/usr/libexec/mediascanner-2.0/mediascanner-extractor r,
# GStreamer binary registry - hybris pulls this in for everything now, not
# just audio
owner @{HOME}/.gstreamer*/registry.*.bin* rw,
owner @{HOME}/.gstreamer*/ rw,
owner @{HOME}/.cache/gstreamer*/ rw,
owner @{HOME}/.cache/gstreamer*/registry.*.bin* rw,
/usr/lib/@{multiarch}/gstreamer*/gstreamer*/gst-plugin-scanner ix,
owner /tmp/orcexec* m,
# gstreamer writes JIT compiled code in the form of orcexec.* files. Various
# locations are tried so silence the ones we won't permit anyway
deny /{,var/}run/user/*/orcexec* w,
deny @{HOME}/orcexec* w,
/{,android/}system/etc/media_codecs*.xml r,
/{,android/}vendor/etc/media_codecs*.xml r,
/etc/wildmidi/wildmidi.cfg r,
# Unisoc video decoding
/dev/dri/** rw,
# Allow read on all directories
/**/ r,
# Allow read on click install directories, removable media and files in
# /usr/local/share.
/usr/share/** r,
/usr/local/share/** r,
/{media,mnt,opt,srv}/** r,
# Allow reading any files in non-hidden directories
owner @{HOME}/[^.]* rk,
owner @{HOME}/[^.]*/ rk,
owner @{HOME}/[^.]*/** rk,
# Allow reading files in XDG directories (ie, where apps are allowed to
# write)
owner @{HOME}/.config/user-dirs.dirs r,
owner @{HOME}/.cache/** rk,
owner @{HOME}/.local/share/** rk,
owner /{,var/}run/user/[0-9]*/** rk,
# Site-specific additions and overrides. See local/README for details.
#include
}
mediascanner2-0.115/mediascanner-2.0.pc.in 0000664 0000000 0000000 00000000405 14367552500 0020120 0 ustar 00root root 0000000 0000000 Name: mediascanner-2.0
Description: Access library for the media scanner's index
Version: @MEDIASCANNER_VERSION@
Requires.private: gio-2.0 sqlite3
Libs: -L@CMAKE_INSTALL_FULL_LIBDIR@ -lmediascanner-2.0
Cflags: -I@CMAKE_INSTALL_FULL_INCLUDEDIR@/mediascanner-2.0
mediascanner2-0.115/mediascanner-2.0.service.in 0000664 0000000 0000000 00000000440 14367552500 0021155 0 ustar 00root root 0000000 0000000 [Unit]
Description=Media Scanner
PartOf=graphical-session.target
Before=graphical-session.target
[Service]
Type=dbus
BusName=com.canonical.MediaScanner2.Daemon
ExecStart=@CMAKE_INSTALL_FULL_BINDIR@/mediascanner-service-2.0
Restart=on-failure
[Install]
WantedBy=graphical-session.target
mediascanner2-0.115/src/ 0000775 0000000 0000000 00000000000 14367552500 0015031 5 ustar 00root root 0000000 0000000 mediascanner2-0.115/src/CMakeLists.txt 0000664 0000000 0000000 00000000255 14367552500 0017573 0 ustar 00root root 0000000 0000000 add_subdirectory(mediascanner)
add_subdirectory(extractor)
add_subdirectory(daemon)
add_subdirectory(ms-dbus)
add_subdirectory(qml/MediaScanner.0.1)
add_subdirectory(utils)
mediascanner2-0.115/src/daemon/ 0000775 0000000 0000000 00000000000 14367552500 0016274 5 ustar 00root root 0000000 0000000 mediascanner2-0.115/src/daemon/CMakeLists.txt 0000664 0000000 0000000 00000001136 14367552500 0021035 0 ustar 00root root 0000000 0000000 add_definitions(${MEDIASCANNER_DEPS_CFLAGS} ${UDISKS_CFLAGS})
include_directories(..)
add_library(scannerstuff STATIC
InvalidationSender.cc
MountWatcher.cc
VolumeManager.cc
SubtreeWatcher.cc
Scanner.cc
../mediascanner/utils.cc
)
target_link_libraries(scannerstuff extractor-client ${UDISKS_LDFLAGS})
add_executable(scannerdaemon
scannerdaemon.cc
)
set_target_properties(scannerdaemon
PROPERTIES OUTPUT_NAME "mediascanner-service-2.0")
target_link_libraries(scannerdaemon
mediascanner
scannerstuff
)
install(
TARGETS scannerdaemon
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
mediascanner2-0.115/src/daemon/InvalidationSender.cc 0000664 0000000 0000000 00000005355 14367552500 0022375 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2014 Canonical, Ltd.
*
* Authors:
* Jussi Pakkanen
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of version 3 of the GNU General Public License 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 General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#include"InvalidationSender.hh"
#include
#include
#include
#include
#include
using namespace std;
// timer delay in seconds
static const char SCOPES_DBUS_IFACE[] = "com.canonical.unity.scopes";
static const char SCOPES_DBUS_PATH[] = "/com/canonical/unity/scopes";
static const char SCOPES_INVALIDATE_RESULTS[] = "InvalidateResults";
namespace mediascanner {
InvalidationSender::InvalidationSender() :
bus(nullptr, g_object_unref) {
}
InvalidationSender::~InvalidationSender() {
if (timeout_id != 0) {
g_source_remove(timeout_id);
}
}
void InvalidationSender::setBus(GDBusConnection *bus) {
this->bus.reset(static_cast(g_object_ref(bus)));
}
void InvalidationSender::setDelay(int delay) {
this->delay = delay;
}
void InvalidationSender::invalidate() {
if (!bus) {
return;
}
if (timeout_id != 0) {
return;
}
if (delay > 0) {
timeout_id = g_timeout_add_seconds(delay, &InvalidationSender::callback, static_cast(this));
} else {
InvalidationSender::callback(this);
}
}
int InvalidationSender::callback(void *data) {
auto invalidator = static_cast(data);
GError *error = nullptr;
if (!g_dbus_connection_emit_signal(
invalidator->bus.get(), nullptr,
SCOPES_DBUS_PATH, SCOPES_DBUS_IFACE, SCOPES_INVALIDATE_RESULTS,
g_variant_new("(s)", "mediascanner-music"), &error)) {
fprintf(stderr, "Could not invalidate music scope results: %s\n", error->message);
g_error_free(error);
error = nullptr;
}
if (!g_dbus_connection_emit_signal(
invalidator->bus.get(), nullptr,
SCOPES_DBUS_PATH, SCOPES_DBUS_IFACE, SCOPES_INVALIDATE_RESULTS,
g_variant_new("(s)", "mediascanner-video"), &error)) {
fprintf(stderr, "Could not invalidate video scope results: %s\n", error->message);
g_error_free(error);
error = nullptr;
}
invalidator->timeout_id = 0;
return G_SOURCE_REMOVE;
}
}
mediascanner2-0.115/src/daemon/InvalidationSender.hh 0000664 0000000 0000000 00000002645 14367552500 0022406 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2014 Canonical, Ltd.
*
* Authors:
* Jussi Pakkanen
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of version 3 of the GNU General Public License 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 General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#ifndef INVALIDATIONSENDER_HH
#define INVALIDATIONSENDER_HH
#include
typedef struct _GDBusConnection GDBusConnection;
namespace mediascanner {
/**
* A class that sends a broadcast signal that the state of media
* files has changed.
*/
class InvalidationSender final {
public:
InvalidationSender();
~InvalidationSender();
InvalidationSender(const InvalidationSender &o) = delete;
InvalidationSender& operator=(const InvalidationSender &o) = delete;
void invalidate();
void setBus(GDBusConnection *bus);
void setDelay(int delay);
private:
static int callback(void *data);
std::unique_ptr bus;
unsigned int timeout_id = 0;
int delay = 0;
};
}
#endif
mediascanner2-0.115/src/daemon/MountWatcher.cc 0000664 0000000 0000000 00000024626 14367552500 0021235 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2014 Canonical, Ltd.
*
* Authors:
* James Henstridge
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of version 3 of the GNU General Public License 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 General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#include "MountWatcher.hh"
#include
#include
#include