gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r7091 - in GNUnet-docs/WWW: . screenshots


From: gnunet
Subject: [GNUnet-SVN] r7091 - in GNUnet-docs/WWW: . screenshots
Date: Sun, 8 Jun 2008 14:50:44 -0600 (MDT)

Author: grothoff
Date: 2008-06-08 14:50:44 -0600 (Sun, 08 Jun 2008)
New Revision: 7091

Added:
   GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-1.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-10.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-11.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-12.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-13.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-14.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-2.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-3.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-4.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-5.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-6.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-7.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-8.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-9.png
   GNUnet-docs/WWW/user_namespaces.php3
Modified:
   GNUnet-docs/WWW/gnunetgtk.php3
   GNUnet-docs/WWW/screenshots/gnunet-gtk-daemon.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-directory-browser.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-fs-search.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-fs-status.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-fs-upload.png
   GNUnet-docs/WWW/screenshots/gnunet-gtk-welcome.png
   GNUnet-docs/WWW/user_afs.php3
Log:
docs

Modified: GNUnet-docs/WWW/gnunetgtk.php3
===================================================================
--- GNUnet-docs/WWW/gnunetgtk.php3      2008-06-08 05:46:53 UTC (rev 7090)
+++ GNUnet-docs/WWW/gnunetgtk.php3      2008-06-08 20:50:44 UTC (rev 7091)
@@ -16,7 +16,7 @@
 
 P();
 W("After <tt>gnunet-gtk</tt> was started, you should see something like the 
following:");
-IMG("screenshots/gnunet-gtk-welcome.png","GNUnet GTK welcome 
window","CENTER",732,464);
+IMG("screenshots/gnunet-gtk-welcome.png","GNUnet GTK welcome 
window","CENTER",615,492);
 W("Which options appear on top depends on the set of plugins that are selected 
in the configuration file.");
 W("The following plugins are currently available:");
 echo "<ul>\n";
@@ -40,7 +40,7 @@
 W("This menu can be used to control <tt>gnunetd</tt>.");
 IMG("screenshots/gnunet-gtk-daemon.png",
     "gnunet-gtk daemon page",
-    "CENTER",732,464);
+    "CENTER",615,492);
 W("The &quot;Start&quot; and &quot;Stop&quot; buttons can be used to start or 
kill the <tt>gnunetd</tt> process.");
 W("Note that stop may kill <tt>gnunetd</tt> even if <tt>gnunetd</tt> is 
running on another machine, while start is only able to start the process on 
the local machine.");
 W("If <tt>gnunetd</tt> is running, the &quot;Start&quot;-button will not be 
active.");
@@ -72,7 +72,7 @@
 W("The status tab gives an overview of the current file-sharing activities.");
 IMG("screenshots/gnunet-gtk-fs-status.png",
     "gnunet-gtk file-sharing status page",
-    "CENTER",732,464);
+    "CENTER",615,492);
 W("It lists the various active searches with the number of search results for 
each search.");
 P();
 W("The download list shows active downloads and how far they have 
progressed.");
@@ -88,7 +88,7 @@
 BP();
 IMG("screenshots/gnunet-gtk-fs-search.png",
     "gnunet-gtk file-sharing search and download page",
-    "CENTER",732,464);
+    "CENTER",615,492);
 W("In order to start a search, enter a keyword into the input line at the top 
and click on search.");
 W("You can specify multiple keywords, separated by spaces.");
 W("Prefix mandatory keywords with a &quot;+&quot;.");
@@ -112,6 +112,8 @@
 H4("Namespaces");
 BP();
 W("If a namespace should be searched, change the selection in the selection 
box on the right from &quot;globally&quot; to some namespace identifier.");
+W("A tutorial for using namespaces can be found %s.",
+  intlink_("user_namespaces.php3", "here"));
 EP();
 
 H4("Downloading");
@@ -131,12 +133,12 @@
 W("If a directory is downloaded, the contents of the directory will be shown 
in the search window.");
 IMG("screenshots/gnunet-gtk-directory-browser.png",
     "gnunet-gtk lists the contents of a directory",
-    "CENTER",732,592);
+    "CENTER",765,679);
 W("Click on the little triangle that appears to the left of the name to show 
the contents of the directory.");
 W("GNUnet is able to show the contents of a directory even if the download is 
still incomplete.");
 W("Files (and other directories) contained in the directory can be downloaded 
just like the search results using the &quot;Download&quot; button.");
 P();
-W("Downloaded files will be saved in the directory specified in the 
<tt>gnunet.conf</tt> configuration file (default is 
<tt>/tmp/gnunet-downloads/</tt>).");
+W("Downloaded files will be saved in the directory specified in the 
<tt>gnunet.conf</tt> configuration file (default is 
<tt>$HOME/gnunet-downloads/</tt>).");
 P();
 W("Again, you can abort downloads using the &quot;Status&quot; tab.");
 W("If you exit <tt>gnunet-gtk</tt>, all active downloads and searches will be 
frozen.");
@@ -149,7 +151,7 @@
 BP();
 IMG("screenshots/gnunet-gtk-fs-upload.png",
     "gnunet-gtk file-sharing publication page",
-    "CENTER",732,464);
+    "CENTER",615,492);
 
 W("In order to share a file to GNUnet, you should first choose between 
insertion and indexing.");
 W("If you want to publish an entire directory tree, select 
&quot;recursive;&quot;.");
@@ -167,7 +169,11 @@
 ANCHOR("fs-advanced");
 H3("Advanced File Sharing");
 BP();
-W("This tab still needs to be documented.");
+W("A tutorial for using namespaces can be found %s.",
+  intlink_("user_namespaces.php3", "here"));
+W("The menus in this tab also allow you to start and stop a collection.");
+W("A collection behaves just like a namespace except that any file that you 
share will automatically be added.");
+W("You can have any number of namespaces, but only one active collection at 
any point in time.");
 EP();
 
 

Modified: GNUnet-docs/WWW/screenshots/gnunet-gtk-daemon.png
===================================================================
(Binary files differ)

Modified: GNUnet-docs/WWW/screenshots/gnunet-gtk-directory-browser.png
===================================================================
(Binary files differ)

Modified: GNUnet-docs/WWW/screenshots/gnunet-gtk-fs-search.png
===================================================================
(Binary files differ)

Modified: GNUnet-docs/WWW/screenshots/gnunet-gtk-fs-status.png
===================================================================
(Binary files differ)

Modified: GNUnet-docs/WWW/screenshots/gnunet-gtk-fs-upload.png
===================================================================
(Binary files differ)

Added: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-1.png
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-10.png
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-10.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-11.png
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-11.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-12.png
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-12.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-13.png
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-13.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-14.png
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-14.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-2.png
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-3.png
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-4.png
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-4.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-5.png
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-5.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-6.png
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-6.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-7.png
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-7.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-8.png
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-8.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-9.png
===================================================================
(Binary files differ)


Property changes on: GNUnet-docs/WWW/screenshots/gnunet-gtk-namespace-9.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: GNUnet-docs/WWW/screenshots/gnunet-gtk-welcome.png
===================================================================
(Binary files differ)

Modified: GNUnet-docs/WWW/user_afs.php3
===================================================================
--- GNUnet-docs/WWW/user_afs.php3       2008-06-08 05:46:53 UTC (rev 7090)
+++ GNUnet-docs/WWW/user_afs.php3       2008-06-08 20:50:44 UTC (rev 7091)
@@ -539,30 +539,37 @@
 BP();
 W("Each namespace is associated with meta-data that describes the namespace.");
 W("This meta-data is provided by the user at the time that the pseudonym was 
created.");
+W("Naturally all of the information is <tt>optional</tt> and maybe 
<tt>incorrect</tt> since it is provided by the user and cannot be verified.");
 W("The meta-data is published in what is called a namespace advertisement.");
-W("These advertisements are exchanged within GNUnet in two ways.");
-W("First, the 'all-zeros' content identifier in the namespace always contains 
the advertisement (if it exists).");
-W("This allows for a simply lookup of the description for a given namespace.");
-W("More importantly, the advertisement can also be found using normal 
keyword-searches.");
+W("These advertisements are exchanged within GNUnet and can be found using 
normal keyword-searches.");
 W("This way, users can learn about new namespaces without relying on 
out-of-band communication or directories.");
 W("When a pseudonym is created, the namespace is by default advertised under 
the keyword <tt>namespace</tt>.");
-W("When a keyword-search finds a namespace advertisement, it is automatically 
stored in the local GNUnet state-database.");
+W("When a keyword-search finds a namespace advertisement, it is automatically 
stored in the local GNUnet database.");
 W("The advertisement is preserved for tools like <tt>gnunet-pseudonym</tt> and 
<tt>gnunet-gtk</tt> that can reproduce them when appropriate.");
 EP();
-H5("Meta-data in the namespace advertisement");
+H5("Namespace roots");
 BP();
-W("While the namespace is uniquely identified by its ID, another way to refer 
to the namespace is to use the NICKNAME.");
-W("The NICKNAME can be freely chosen by the creator of the namespace and hence 
conflicts are possible.");
-W("If a GNUnet client learns about more than one namespace using the same 
NICKNAME, the ID is appended to the NICKNAME to get a unique identifier.");
-W("The advertisement also contains meta-data describing the content of the 
namespace.");
-W("Naturally all of this information is <tt>optional</tt> and maybe 
<tt>incorrect</tt> since it is provided by the user and cannot be verified.");
 W("An item of particular interest in the namespace advertisement is the 
ROOT.");
 W("The ROOT is the identifier of a designated file in the namespace.");
 W("The idea is that the ROOT can be used to advertise an entry point to the 
content of the namespace.");
-P();
 W("Note that currently all of the meta-data must be provided at the time where 
the namespace is created and cannot be updated later.");
-W("Furthermore, the namespace advertisement can only be published under a 
single keyword (this is purely a UI limitation).");
 EP();
+H5("Naming namespaces");
+BP();
+W("On the network, pseudonyms are uniquely identified using the hash of the 
corresponding public key.");
+W("As a result, links to content in namespaces can be rather long -- they need 
to incorporate a 512-bit binary hash!");
+W("In order to make using namespaces a bit more practical, NICKNAMEs are used 
to identify pseudonyms on each system.");
+W("The NICKNAME is derived from the metadata provided when the namespace was 
created.");
+W("Since metadata can be freely chosen by the creator of the namespace, 
conflicts are possible.");
+W("Different users may choose to create namespaces with the same meta-data 
resulting in identical base-names for different namespaces.");
+W("In order to ensure that there is only one namespace corresponding to a 
given name, a unique number is added to the base-name to ensure that the 
resulting NICKNAME is unique.");
+W("The resulting NICKNAME is (usually) short and unique for the local 
system.");
+P();
+w("However, other systems may have chosen different unique numbers for the 
same namespace.");
+W("For example, the same namespace may be called &quot;Alice-1&quot; on 
Carol's system and &quot;Alice-2&quot; on Bob's system, simply because Bob got 
an advertisement for another namespace &quot;Alice&quot; from Dave earlier (and 
hence Bob called that one &quot;Alice-1&quot;).");
+W("If Bob were to discuss namespaces with Carol, they should not use the 
NICKNAMEs (which may differ between systems) but instead should use the hash of 
the public keys.");
+W("Naturally, software can and should handle the necessary conversions between 
systems (by translating from NICKNAME to the hash of the public key and 
back).");
+EP();
 
 
 include("html_footer.php3");

Added: GNUnet-docs/WWW/user_namespaces.php3
===================================================================
--- GNUnet-docs/WWW/user_namespaces.php3                                (rev 0)
+++ GNUnet-docs/WWW/user_namespaces.php3        2008-06-08 20:50:44 UTC (rev 
7091)
@@ -0,0 +1,139 @@
+<?php
+include("scripts.php3");
+$title = "GNUnet Documentation: A Tutorial for Using Namespaces";
+$description="How to create namespaces, add content to namespaces, update 
content and search namespaces";
+include("html_header.php3");
+H2("Howto Use Namespaces");
+
+afslogo();
+ANCHOR("setup"); H3("Setup");
+BP();
+W("The first step to start with namespaces is to enable tracking of available 
content.");
+IMG("screenshots/gnunet-gtk-namespace-1.png",
+    "The 'Advanced' Tab in file-sharing",
+    "CENTER",615,492);
+W("This option is disabled by default since it would allow an adversary who 
takes control of the current machine to determine what metadata the local user 
has been exposed to.");
+W("Once you are done with your namespace operation, you may want to disable 
the checkbox and press the <tt>Clear</tt> button.");
+W("For this tutorial, we need to enable tracking of available content:");
+IMG("screenshots/gnunet-gtk-namespace-2.png",
+    "The 'Advanced' Tab in file-sharing with tracking enabled",
+    "CENTER",615,492);
+EP();
+
+
+ANCHOR("publish"); H3("Publish Content");
+BP();
+W("The next step is (usually) to publish some content using the normal 
publishing dialogs.");
+W("You could also add files that you did not upload yourself (and that you 
only found by searching the network) to a namespace, but since you could not 
know if those files were of high quality, we generally would advise against 
it.");
+W("The better method would be to download the content, check it and then 
re-publish it.");
+W("For this tutorial, we will assume that the content that you are publishing 
in your namespace is content that you are sharing.");
+IMG("screenshots/gnunet-gtk-namespace-3.png",
+    "The 'Publication' Tab in file-sharing",
+    "CENTER",615,492);
+W("As shown in the screenshot, select a file or directory from your local 
disk.");
+W("Any selections of the various options for publishing will work.");
+W("After clicking the <tt>Publish</tt> button, you can edit the meta-data for 
the content.");
+IMG("screenshots/gnunet-gtk-namespace-4.png",
+    "Edit the meta-data for the publication",
+    "CENTER",712,482);
+P();
+W("Finally, you should switch to the <tt>Status</tt> tab and wait for your 
upload to complete (blue bar full under Publications).");
+IMG("screenshots/gnunet-gtk-namespace-5.png",
+    "The status tab shows the progress of uploads and downloads",
+    "CENTER",615,492);
+EP();
+
+ANCHOR("create"); H3("Creating the Namespace");
+BP();
+W("If you switch back to the <tt>Advanced</tt> tab, you should now see the 
(tracked) content that you have published since enabling tracking in the 
list.");
+IMG("screenshots/gnunet-gtk-namespace-6.png",
+    "The 'Advanced' Tab in file-sharing with tracked content",
+    "CENTER",615,492);
+W("At this point, we can create our first namespace.");
+W("Select <tt>New</tt> and then <tt>Namespace</tt> from the menu.");
+W("A dialog will open where you can enter meta-data describing the 
namespace.");
+IMG("screenshots/gnunet-gtk-namespace-7.png",
+    "Dialog for entering metadata about the namespace",
+    "CENTER",694,459);
+W("You should at least provide a brief description, a title or an author.");
+W("Those values will be used for the nickname of the namespace.");
+W("If you fail to specify metadata for any of these types, your namespace will 
be called 'unknown'.");
+W("An important special entry in this dialog is the namespace root.");
+W("The namespace root is the identifier of some piece of content in your 
namespace that will be given to uses discovering the namespace.");
+W("Think of it as the name of the entry-point to your namespace.");
+W("A common choice is simply 'root'.");
+W("In the tutorial, 'gpl' will be used for the root.");
+P();
+W("You can also specify keywords for the namespace in this dialog.");
+W("An advertisement for your namespace will be published under those 
keywords.");
+W("Whenever users search for any of those keywords, they will learn about your 
namespace.");
+W("<tt>gnunet-gtk</tt> will take a few seconds to create the namespace after 
you press <tt>Ok</tt>.");
+W("Note that part of the process is generating a secret key, so if your system 
seems to hang, type randomly on your keyboard go generate entropy.");
+P();
+W("The <tt>Advanced</tt> tab should now look like this:");
+IMG("screenshots/gnunet-gtk-namespace-7.png",
+    "Dialog for entering metadata about the namespace",
+    "CENTER",615,492);
+EP();
+
+ANCHOR("insert"); H3("Inserting into the Namespace");
+BP();
+W("In order to add content to your namespace, select a file or directory under 
<tt>Available content</tt> and click <tt>Add</tt>.");
+W("A new dialog will pop up where you need to specify an identifier for the 
content.");
+IMG("screenshots/gnunet-gtk-namespace-9.png",
+    "The 'Advanced' Tab in file-sharing",
+    "CENTER",487,177);
+W("The identifier is like a keyword, except that users need to use the 
identifier in conjunction with the namespace to find the content.");
+W("While not required, the first bit of content that we will publish in the 
namespace will also be the root of the namespace, hence we will enter 'gpl' for 
the identifier.");
+W("The <tt>Next Identifier</tt> is the identifier that will be used for any 
updates to the content published under <tt>Identifier</tt>.");
+W("If users search the namespace using the identifier, they will automatically 
also search for such updates.");
+W("Knowing that we will publish the GPLv2 as the root, we determine that a 
good name for an update would be 'gpl3'.");
+EP();
+
+
+ANCHOR("update"); H3("Updating content");
+BP();
+W("In order to demonstrate updating, we need a second available file.");
+W("Following the same steps that we used for publishing the GPL, we added the 
GPLv3.");
+W("As a result, the <tt>Advanced</tt> tab should look like this:");
+IMG("screenshots/gnunet-gtk-namespace-10.png",
+    "The 'Advanced' Tab in file-sharing with GPLv3",
+    "CENTER",615,492);
+W("In the namespace tab, we select the original file that we want to publish 
an update for (here COPYING) and in the <tt>Available Content</tt> list we 
select the updated content (here gpl3.txt).");
+W("We can then press the <tt>Update</tt> button to create an update.");
+IMG("screenshots/gnunet-gtk-namespace-11.png",
+    "The 'Advanced' Tab in file-sharing",
+    "CENTER",510,137);
+W("This time, we are not prompted for an identifier -- 'gpl3' is automatically 
chosen for us (since we are updating COPYING).");
+W("We are given the opportunity to specify an identifier for the update to the 
update.");
+W("We can leave <tt>Next Identifier</tt> emtpy to express that there will 
never be an update to 'gpl3'.");
+W("The resulting namespace overview will then look like this:");
+IMG("screenshots/gnunet-gtk-namespace-12.png",
+    "The 'Advanced' Tab in file-sharing with GPLv3 inserted",
+    "CENTER",615,492);
+EP();
+
+
+ANCHOR("search"); H3("Search");
+BP();
+W("Users that have discovered the namespace using a keyword search can then 
select it from the drop-down list in the <tt>Search and Download</tt> tab 
(behind <tt>in namespace</tt>.");
+W("If a namespace is selected, the <tt>Keyword</tt> is automatically set to 
the root of the namespace (here 'gpl'):");
+IMG("screenshots/gnunet-gtk-namespace-13.png",
+    "The 'Search and Download' Tab in file-sharing with the 'Free Software 
Licenses' namespace selected",
+    "CENTER",615,492);
+W("The number behind the namespace identifier (here '0') can be used to assign 
the namespace a 'rank'.");
+W("The rank is not used by GNUnet; the idea is that users can use it to 
express (and remember) which namespaces they like best.");
+P();
+W("Now that a namespace has been selected, the <tt>Find</tt> button can be 
used to search it.");
+IMG("screenshots/gnunet-gtk-namespace-14.png",
+    "The 'Search and Download' Tab in file-sharing with search results for the 
'Free Software Licenses' namespace",
+    "CENTER",615,492);
+W("GNUnet will first find the search result for the identifier 'gpl'.");
+W("Since 'gpl' was specified with an update, GNUnet will then automatically 
search for the update under the identifier 'gpl3'.");
+W("All results found for 'gpl' and its (transitive) updates will be displayed 
in the result list.");
+P();
+W("In this example, using the keyword 'gpl3' would have only resulted in the 
'gpl3.txt' result.");
+EP();
+
+include("html_footer.php3");
+?>





reply via email to

[Prev in Thread] Current Thread [Next in Thread]