diff options
Diffstat (limited to 'lib/odbc/doc/src')
-rw-r--r-- | lib/odbc/doc/src/Makefile | 31 | ||||
-rw-r--r-- | lib/odbc/doc/src/book.gif | bin | 1081 -> 0 bytes | |||
-rw-r--r-- | lib/odbc/doc/src/databases.xml | 2 | ||||
-rw-r--r-- | lib/odbc/doc/src/error_handling.xml | 2 | ||||
-rw-r--r-- | lib/odbc/doc/src/fascicules.xml | 19 | ||||
-rw-r--r-- | lib/odbc/doc/src/getting_started.xml | 2 | ||||
-rw-r--r-- | lib/odbc/doc/src/note.gif | bin | 1539 -> 0 bytes | |||
-rw-r--r-- | lib/odbc/doc/src/notes.gif | bin | 2005 -> 0 bytes | |||
-rw-r--r-- | lib/odbc/doc/src/notes.xml | 103 | ||||
-rw-r--r-- | lib/odbc/doc/src/notes_history.xml | 4 | ||||
-rw-r--r-- | lib/odbc/doc/src/odbc.gif | bin | 15184 -> 0 bytes | |||
-rw-r--r-- | lib/odbc/doc/src/odbc.xml | 54 | ||||
-rw-r--r-- | lib/odbc/doc/src/odbc_index.gif | bin | 15184 -> 0 bytes | |||
-rw-r--r-- | lib/odbc/doc/src/part_notes.xml | 41 | ||||
-rw-r--r-- | lib/odbc/doc/src/part_notes_history.xml | 35 | ||||
-rw-r--r-- | lib/odbc/doc/src/ref_man.gif | bin | 1530 -> 0 bytes | |||
-rw-r--r-- | lib/odbc/doc/src/user_guide.gif | bin | 1581 -> 0 bytes | |||
-rw-r--r-- | lib/odbc/doc/src/warning.gif | bin | 1498 -> 0 bytes |
18 files changed, 124 insertions, 169 deletions
diff --git a/lib/odbc/doc/src/Makefile b/lib/odbc/doc/src/Makefile index b66d00a88b..a6311ceede 100644 --- a/lib/odbc/doc/src/Makefile +++ b/lib/odbc/doc/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 1999-2016. All Rights Reserved. +# Copyright Ericsson AB 1999-2018. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -38,11 +38,9 @@ RELSYSDIR = $(RELEASE_PATH)/lib/$(APPLICATION)-$(VSN) # Target Specs # ---------------------------------------------------- XML_APPLICATION_FILES = ref_man.xml -XML_REF3_FILES = odbc.xml +XML_REF3_FILES = odbc.xml -XML_PART_FILES = part.xml \ - part_notes.xml \ - part_notes_history.xml +XML_PART_FILES = part.xml XML_HTML_FILES = \ notes_history.xml @@ -52,21 +50,15 @@ XML_CHAPTER_FILES = \ getting_started.xml \ databases.xml \ error_handling.xml \ - notes.xml + notes.xml BOOK_FILES = book.xml XML_FILES = $(BOOK_FILES) $(XML_APPLICATION_FILES) $(XML_REF3_FILES) \ - $(XML_PART_FILES) $(XML_CHAPTER_FILES) + $(XML_PART_FILES) $(XML_CHAPTER_FILES) GIF_FILES = \ - book.gif \ - odbc.gif \ - note.gif \ - notes.gif \ - ref_man.gif \ - user_guide.gif \ - odbc_app_arc.gif + odbc_app_arc.gif # ---------------------------------------------------- @@ -87,10 +79,10 @@ HTML_REF_MAN_FILE = $(HTMLDIR)/index.html TOP_PDF_FILE = $(PDFDIR)/$(APPLICATION)-$(VSN).pdf # ---------------------------------------------------- -# FLAGS +# FLAGS # ---------------------------------------------------- -XML_FLAGS += -DVIPS_FLAGS += +XML_FLAGS += +DVIPS_FLAGS += # ---------------------------------------------------- # Targets @@ -109,6 +101,7 @@ html: gifs $(HTML_REF_MAN_FILE) clean clean_docs: rm -rf $(HTMLDIR)/* + rm -rf $(XMLDIR) rm -f $(MAN3DIR)/* rm -f $(TOP_PDF_FILE) $(TOP_PDF_FILE:%.pdf=%.fo) rm -f errs core *~ @@ -117,12 +110,12 @@ man: $(MAN3_FILES) gifs: $(GIF_FILES:%=$(HTMLDIR)/%) # We depend just to copy them to ../html -debug opt: +debug opt: # ---------------------------------------------------- # Release Target -# ---------------------------------------------------- +# ---------------------------------------------------- include $(ERL_TOP)/make/otp_release_targets.mk release_docs_spec: docs diff --git a/lib/odbc/doc/src/book.gif b/lib/odbc/doc/src/book.gif Binary files differdeleted file mode 100644 index 94b3868792..0000000000 --- a/lib/odbc/doc/src/book.gif +++ /dev/null diff --git a/lib/odbc/doc/src/databases.xml b/lib/odbc/doc/src/databases.xml index a060f87e46..614c327a46 100644 --- a/lib/odbc/doc/src/databases.xml +++ b/lib/odbc/doc/src/databases.xml @@ -65,7 +65,7 @@ <p>Another obstacle is that some drivers do not support scrollable cursors which has the effect that the only way to traverse the result set is sequentially, with next, from the first row to the - last, and once you pass a row you can not go back. This means + last, and once you pass a row you cannot go back. This means that some functions in the interface will not work together with certain drivers. A similar problem is that not all drivers support "row count" for select queries, hence resulting in that diff --git a/lib/odbc/doc/src/error_handling.xml b/lib/odbc/doc/src/error_handling.xml index 4c80cff12f..8d794d2c99 100644 --- a/lib/odbc/doc/src/error_handling.xml +++ b/lib/odbc/doc/src/error_handling.xml @@ -138,7 +138,7 @@ should be run through the erlang port was not compiled for your platform.</item> <item>Errors discovered by the ODBC driver - If calls to the - ODBC-driver fails due to circumstances that can not be + ODBC-driver fails due to circumstances that cannot be controlled by the Erlang ODBC application programmer, an error string will be dug up from the driver. This string will be the <c>Reason</c> in the <c>{error, Reason} </c> diff --git a/lib/odbc/doc/src/fascicules.xml b/lib/odbc/doc/src/fascicules.xml deleted file mode 100644 index 91251d4b20..0000000000 --- a/lib/odbc/doc/src/fascicules.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!DOCTYPE fascicules SYSTEM "fascicules.dtd"> - -<fascicules> - <fascicule file="part" href="part_frame.html" entry="no"> - User's Guide - </fascicule> - <fascicule file="ref_man" href="ref_man_frame.html" entry="yes"> - Reference Manual - </fascicule> - <fascicule file="part_notes" href="part_notes_frame.html" entry="no"> - Release Notes - </fascicule> - <fascicule file="" href="../../../../doc/print.html" entry="no"> - Off-Print - </fascicule> -</fascicules> - - diff --git a/lib/odbc/doc/src/getting_started.xml b/lib/odbc/doc/src/getting_started.xml index f2ff8b8993..b27754ff22 100644 --- a/lib/odbc/doc/src/getting_started.xml +++ b/lib/odbc/doc/src/getting_started.xml @@ -50,7 +50,7 @@ and paths to appropriate values. This may differ a lot between different os's, databases and ODBC drivers. This is a configuration problem related to the third party product - and hence we can not give you a standard solution in this guide.</item> + and hence we cannot give you a standard solution in this guide.</item> <item>The Erlang ODBC application consists of both <c>Erlang</c> and <c>C</c> code. The <c>C</c> code is delivered as a precompiled executable for windows, solaris and linux (SLES10) in the commercial diff --git a/lib/odbc/doc/src/note.gif b/lib/odbc/doc/src/note.gif Binary files differdeleted file mode 100644 index 6fffe30419..0000000000 --- a/lib/odbc/doc/src/note.gif +++ /dev/null diff --git a/lib/odbc/doc/src/notes.gif b/lib/odbc/doc/src/notes.gif Binary files differdeleted file mode 100644 index e000cca26a..0000000000 --- a/lib/odbc/doc/src/notes.gif +++ /dev/null diff --git a/lib/odbc/doc/src/notes.xml b/lib/odbc/doc/src/notes.xml index cc25a21c74..8d708162e4 100644 --- a/lib/odbc/doc/src/notes.xml +++ b/lib/odbc/doc/src/notes.xml @@ -4,14 +4,14 @@ <chapter> <header> <copyright> - <year>2004</year><year>2016</year> + <year>2004</year><year>2018</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software @@ -21,7 +21,7 @@ limitations under the License. </legalnotice> - + <title>ODBC Release Notes</title> <prepared>otp_appnotes</prepared> <docno>nil</docno> @@ -32,7 +32,68 @@ <p>This document describes the changes made to the odbc application. </p> - <section><title>ODBC 2.12</title> + <section><title>ODBC 2.12.4</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Minor adjustments made to build system for parallel + configure.</p> + <p> + Own Id: OTP-15340 Aux Id: OTP-14625 </p> + </item> + </list> + </section> + +</section> + +<section><title>ODBC 2.12.3</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Enhance error handling to avoid stack corruption</p> + <p> + Own Id: OTP-15667 Aux Id: ERL-808, PR-2065 </p> + </item> + </list> + </section> + +</section> + +<section><title>ODBC 2.12.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Improved documentation.</p> + <p> + Own Id: OTP-15190</p> + </item> + </list> + </section> + +</section> + +<section><title>ODBC 2.12.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> Removed all old unused files in the documentation. + </p> + <p> + Own Id: OTP-14475 Aux Id: ERL-409, PR-1493 </p> + </item> + </list> + </section> + +</section> + +<section><title>ODBC 2.12</title> <section><title>Improvements and New Features</title> <list> @@ -568,9 +629,9 @@ </section> - + <section><title>ODBC 2.10.7</title> - + <section><title>Fixed Bugs and Malfunctions</title> <list> <item> @@ -583,7 +644,7 @@ </list> </section> - + <section><title>Improvements and New Features</title> <list> <item> @@ -720,7 +781,7 @@ </section> <section><title>ODBC 2.10.5</title> - + <section><title>Fixed Bugs and Malfunctions</title> <list> <item> @@ -732,12 +793,12 @@ </item> </list> </section> - + </section> <section><title>ODBC 2.10.4</title> - + <section><title>Improvements and New Features</title> <list> <item> @@ -756,7 +817,7 @@ </item> </list> </section> - + </section> <section><title>ODBC 2.10.3</title> @@ -787,7 +848,7 @@ </section> <section><title>ODBC 2.10.2</title> - + <section><title>Fixed Bugs and Malfunctions</title> <list> <item> @@ -802,9 +863,9 @@ </section> </section> - + <section><title>ODBC 2.10.1</title> - + <section><title>Improvements and New Features</title> <list> <item> @@ -852,7 +913,7 @@ </section> <section><title>ODBC 2.10</title> - + <section><title>Improvements and New Features</title> <list> <item> @@ -865,11 +926,11 @@ </item> </list> </section> - + </section> <section><title>ODBC 2.0.9</title> - + <section><title>Improvements and New Features</title> <list> <item> @@ -897,9 +958,9 @@ </item> </list> </section> - + </section> - + <section> <title>ODBC 2.0.8</title> @@ -1142,9 +1203,5 @@ </item> </list> </section> - <!-- p>For information about older versions see - <url href="part_notes_history_frame.html">release notes history</url>.</p --> </section> </chapter> - - diff --git a/lib/odbc/doc/src/notes_history.xml b/lib/odbc/doc/src/notes_history.xml index 22a92f67cd..d0c0a472e7 100644 --- a/lib/odbc/doc/src/notes_history.xml +++ b/lib/odbc/doc/src/notes_history.xml @@ -63,7 +63,7 @@ <list type="bulleted"> <item> <p>The erlang odbc process will now die normally if a - connection can not be established. No connection no + connection cannot be established. No connection no process it is expected. And as the client has already received the error message that would be the reason with which the erlang process would be stopped, the supervisor @@ -193,7 +193,7 @@ </item> <item> <p>The erlang odbc process will now die normally if a - connection can not be established. No connection no + connection cannot be established. No connection no process it is expected. And as the client has already received the error message that would be the reason with which the erlang process would be stopped, the supervisor diff --git a/lib/odbc/doc/src/odbc.gif b/lib/odbc/doc/src/odbc.gif Binary files differdeleted file mode 100644 index fbbabee5aa..0000000000 --- a/lib/odbc/doc/src/odbc.gif +++ /dev/null diff --git a/lib/odbc/doc/src/odbc.xml b/lib/odbc/doc/src/odbc.xml index 4bb1f035f9..1a3063e6ce 100644 --- a/lib/odbc/doc/src/odbc.xml +++ b/lib/odbc/doc/src/odbc.xml @@ -29,7 +29,7 @@ <date></date> <rev></rev> </header> - <module>odbc</module> + <module since="">odbc</module> <modulesummary>Erlang ODBC application</modulesummary> <description> <p>This application provides an Erlang interface to communicate @@ -130,8 +130,8 @@ </section> <funcs> <func> - <name>commit(Ref, CommitMode) -></name> - <name>commit(Ref, CommitMode, TimeOut) -> ok | {error, Reason} </name> + <name since="">commit(Ref, CommitMode) -></name> + <name since="">commit(Ref, CommitMode, TimeOut) -> ok | {error, Reason} </name> <fsummary>Commits or rollbacks a transaction. </fsummary> <type> <v>Ref = connection_reference() </v> @@ -145,7 +145,7 @@ </desc> </func> <func> - <name>connect(ConnectStr, Options) -> {ok, Ref} | {error, Reason} </name> + <name since="">connect(ConnectStr, Options) -> {ok, Ref} | {error, Reason} </name> <fsummary>Opens a connection to the database. </fsummary> <type> <v>ConnectStr = string()</v> @@ -236,7 +236,7 @@ </desc> </func> <func> - <name>disconnect(Ref) -> ok | {error, Reason} </name> + <name since="">disconnect(Ref) -> ok | {error, Reason} </name> <fsummary>Closes a connection to a database. </fsummary> <type> <v>Ref = connection_reference()</v> @@ -246,7 +246,7 @@ <p>Closes a connection to a database. This will also terminate all processes that may have been spawned when the connection was opened. This call will always succeed. - If the connection can not be disconnected gracefully it will + If the connection cannot be disconnected gracefully it will be brutally killed. However you may receive an error message as result if you try to disconnect a connection started by another process. @@ -255,8 +255,8 @@ </desc> </func> <func> - <name>describe_table(Ref, Table) -> </name> - <name>describe_table(Ref, Table, Timeout) -> {ok, Description} | {error, Reason} </name> + <name since="">describe_table(Ref, Table) -> </name> + <name since="">describe_table(Ref, Table, Timeout) -> {ok, Description} | {error, Reason} </name> <fsummary>Queries the database to find out the data types of the columns of the table <c>Table</c>. </fsummary> <type> <v>Ref = connection_reference()</v> @@ -271,8 +271,8 @@ </desc> </func> <func> - <name>first(Ref) -></name> - <name>first(Ref, Timeout) -> {selected, ColNames, Rows} | {error, Reason} </name> + <name since="">first(Ref) -></name> + <name since="">first(Ref, Timeout) -> {selected, ColNames, Rows} | {error, Reason} </name> <fsummary>Returns the first row of the result set and positions a cursor at this row.</fsummary> <type> <v>Ref = connection_reference()</v> @@ -287,8 +287,8 @@ </desc> </func> <func> - <name>last(Ref) -></name> - <name>last(Ref, TimeOut) -> {selected, ColNames, Rows} | {error, Reason} </name> + <name since="">last(Ref) -></name> + <name since="">last(Ref, TimeOut) -> {selected, ColNames, Rows} | {error, Reason} </name> <fsummary>Returns the last row of the result set and positions a cursor at this row. </fsummary> <type> <v>Ref = connection_reference()</v> @@ -303,8 +303,8 @@ </desc> </func> <func> - <name>next(Ref) -> </name> - <name>next(Ref, TimeOut) -> {selected, ColNames, Rows} | {error, Reason} </name> + <name since="">next(Ref) -> </name> + <name since="">next(Ref, TimeOut) -> {selected, ColNames, Rows} | {error, Reason} </name> <fsummary>Returns the next row of the result set relative the current cursor position and positions the cursor at this row. </fsummary> <type> <v>Ref = connection_reference()</v> @@ -325,8 +325,8 @@ </desc> </func> <func> - <name>param_query(Ref, SQLQuery, Params) -> </name> - <name>param_query(Ref, SQLQuery, Params, TimeOut) -> ResultTuple | {error, Reason} </name> + <name since="">param_query(Ref, SQLQuery, Params) -> </name> + <name since="">param_query(Ref, SQLQuery, Params, TimeOut) -> ResultTuple | {error, Reason} </name> <fsummary>Executes a parameterized SQL query.</fsummary> <type> <v>Ref = connection_reference()</v> @@ -353,8 +353,8 @@ </desc> </func> <func> - <name>prev(Ref) -> </name> - <name>prev(ConnectionReference, TimeOut) -> {selected, ColNames, Rows} | {error, Reason} </name> + <name since="">prev(Ref) -> </name> + <name since="">prev(ConnectionReference, TimeOut) -> {selected, ColNames, Rows} | {error, Reason} </name> <fsummary>Returns the previous row of the result set relative the current cursor position and positions the cursor at this row. </fsummary> <type> <v>Ref = connection_reference()</v> @@ -371,8 +371,8 @@ </func> <func> - <name>start() -> </name> - <name>start(Type) -> ok | {error, Reason}</name> + <name since="">start() -> </name> + <name since="">start(Type) -> ok | {error, Reason}</name> <fsummary>Starts the odb application. </fsummary> <type> @@ -389,7 +389,7 @@ </func> <func> - <name>stop() -> ok </name> + <name since="">stop() -> ok </name> <fsummary> Stops the odbc application.</fsummary> <desc> @@ -400,8 +400,8 @@ </func> <func> - <name>sql_query(Ref, SQLQuery) -> </name> - <name>sql_query(Ref, SQLQuery, TimeOut) -> ResultTuple | [ResultTuple] |{error, Reason}</name> + <name since="">sql_query(Ref, SQLQuery) -> </name> + <name since="">sql_query(Ref, SQLQuery, TimeOut) -> ResultTuple | [ResultTuple] |{error, Reason}</name> <fsummary>Executes a SQL query or a batch of SQL queries. If it is a SELECT query the result set is returned, on the format<c>{selected, ColNames, Rows}</c>. For other query types the tuple <c>{updated, NRows}</c>is returned, and for batched queries, if the driver supports them, this function can also return a list of result tuples.</fsummary> <type> <v>Ref = connection_reference()</v> @@ -429,8 +429,8 @@ </desc> </func> <func> - <name>select_count(Ref, SelectQuery) -> </name> - <name>select_count(Ref, SelectQuery, TimeOut) -> {ok, NrRows} | {error, Reason} </name> + <name since="">select_count(Ref, SelectQuery) -> </name> + <name since="">select_count(Ref, SelectQuery, TimeOut) -> {ok, NrRows} | {error, Reason} </name> <fsummary>Executes a SQL SELECT query and associates the result set with the connection. A cursor is positioned before the first row in the result set and the tuple <c>{ok, NrRows}</c>is returned. </fsummary> <type> <v>Ref = connection_reference()</v> @@ -453,8 +453,8 @@ </desc> </func> <func> - <name>select(Ref, Position, N) -></name> - <name>select(Ref, Position, N, TimeOut) -> {selected, ColNames, Rows} | {error, Reason} </name> + <name since="">select(Ref, Position, N) -></name> + <name since="">select(Ref, Position, N, TimeOut) -> {selected, ColNames, Rows} | {error, Reason} </name> <fsummary>Selects <c>N</c>consecutive rows of the result set.</fsummary> <type> <v>Ref = connection_reference()</v> diff --git a/lib/odbc/doc/src/odbc_index.gif b/lib/odbc/doc/src/odbc_index.gif Binary files differdeleted file mode 100644 index fbbabee5aa..0000000000 --- a/lib/odbc/doc/src/odbc_index.gif +++ /dev/null diff --git a/lib/odbc/doc/src/part_notes.xml b/lib/odbc/doc/src/part_notes.xml deleted file mode 100644 index 8f1dbd3fbc..0000000000 --- a/lib/odbc/doc/src/part_notes.xml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!DOCTYPE part SYSTEM "part.dtd"> - -<part xmlns:xi="http://www.w3.org/2001/XInclude"> - <header> - <copyright> - <year>2004</year><year>2016</year> - <holder>Ericsson AB. All Rights Reserved.</holder> - </copyright> - <legalnotice> - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - </legalnotice> - - <title>ODBC Release Notes</title> - <prepared>Ingela Anderton Andin</prepared> - <docno></docno> - <date>2004-09-07</date> - <rev></rev> - <file>part_notes.sgml</file> - </header> - <description> - <p>An interface to relational SQL-databases built on ODBC (Open - Database Connectivity). </p> - <p>For information about older versions see - <url href="part_notes_history_frame.html">release notes history</url>.</p> - </description> - <xi:include href="notes.xml"/> -</part> - - diff --git a/lib/odbc/doc/src/part_notes_history.xml b/lib/odbc/doc/src/part_notes_history.xml deleted file mode 100644 index 6f855f6ed1..0000000000 --- a/lib/odbc/doc/src/part_notes_history.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!DOCTYPE part SYSTEM "part.dtd"> - -<part> - <header> - <copyright> - <year>2004</year><year>2016</year> - <holder>Ericsson AB. All Rights Reserved.</holder> - </copyright> - <legalnotice> - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - </legalnotice> - - <title>Odbc</title> - <prepared>Ingela Anderton Andin</prepared> - <docno></docno> - <date>2004-09-30</date> - <rev></rev> - <file>part_notes.sgml</file> - </header> - <include file="notes_history"></include> -</part> - - diff --git a/lib/odbc/doc/src/ref_man.gif b/lib/odbc/doc/src/ref_man.gif Binary files differdeleted file mode 100644 index b13c4efd53..0000000000 --- a/lib/odbc/doc/src/ref_man.gif +++ /dev/null diff --git a/lib/odbc/doc/src/user_guide.gif b/lib/odbc/doc/src/user_guide.gif Binary files differdeleted file mode 100644 index e6275a803d..0000000000 --- a/lib/odbc/doc/src/user_guide.gif +++ /dev/null diff --git a/lib/odbc/doc/src/warning.gif b/lib/odbc/doc/src/warning.gif Binary files differdeleted file mode 100644 index 96af52360e..0000000000 --- a/lib/odbc/doc/src/warning.gif +++ /dev/null |