rpms/barry/F-9 barry-ipmodem.patch, NONE, 1.1 .cvsignore, 1.2, 1.3 barry.spec, 1.1, 1.2 sources, 1.2, 1.3
Christopher D. Stover
quantumburnz at fedoraproject.org
Tue Jan 13 03:45:47 UTC 2009
- Previous message: rpms/audio-convert-mod/devel .cvsignore, 1.5, 1.6 audio-convert-mod.spec, 1.8, 1.9 sources, 1.5, 1.6 audio-convert-mod-3.45.4-lame.patch, 1.1, NONE
- Next message: rpms/gnome-scan/devel gnome-scan.spec,1.9,1.10
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: quantumburnz
Update of /cvs/pkgs/rpms/barry/F-9
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv3484
Modified Files:
.cvsignore barry.spec sources
Added Files:
barry-ipmodem.patch
Log Message:
version bump
barry-ipmodem.patch:
--- NEW FILE barry-ipmodem.patch ---
diff --git a/src/m_ipmodem.cc b/src/m_ipmodem.cc
index 23c81c1..dae0f08 100644
--- a/src/m_ipmodem.cc
+++ b/src/m_ipmodem.cc
@@ -60,95 +60,78 @@ IpModem::~IpModem()
}
}
-bool IpModem::SendPassword(const char *password)
+bool IpModem::SendPassword( const char *password, uint32_t seed )
{
- if( !password || strlen(password) == 0 ) {
- throw BadPassword("No password provided.", 0, false);
- }
-
int read_ep = m_con.GetProbeResult().m_epModem.read;
int write_ep = m_con.GetProbeResult().m_epModem.write;
+ unsigned char pwdigest[SHA_DIGEST_LENGTH];
+ unsigned char prefixedhash[SHA_DIGEST_LENGTH + 4];
+ unsigned char pw_response[SHA_DIGEST_LENGTH + 8];
+ uint32_t new_seed;
Data data;
- m_dev.BulkWrite(write_ep, pw_start, sizeof(pw_start));
- m_dev.BulkRead(read_ep, data);
- ddout("IPModem read packet.\n" << data);
-
- // Need to add checks for other packet types.
- // check for 02 00 00 00 SS SS SS SS RR 00 00 00 0a 00 00 00 PP PP PP PP PP 00 00 00 78 56 34 12
- if( data.GetSize() >= 9 && data.GetData()[0] == 0x02 &&
- memcmp(data.GetData() + data.GetSize() - 4, special_flag, sizeof(special_flag))== 0 ) {
- // Got a password request packet
- ddout("IPModem password request packet:\n" << data);
-
- // Check how many retries are left
- if( data.GetData()[8] < BARRY_MIN_PASSWORD_TRIES ) {
- throw BadPassword("Fewer than " BARRY_MIN_PASSWORD_TRIES_ASC " password tries remaining in device. Refusing to proceed, to avoid device zapping itself. Use a Windows client, or re-cradle the device.",
- data.GetData()[8],
- true);
- }
+ if( !password || strlen(password) == 0 ) {
+ throw BadPassword("No password provided.", 0, false);
+ }
- // Build the password hash
- unsigned char pwdigest[SHA_DIGEST_LENGTH];
- unsigned char prefixedhash[SHA_DIGEST_LENGTH + 4];
- unsigned char pw_response[SHA_DIGEST_LENGTH + 8];
- unsigned char seed[4];
+ // Build the password hash
+ // first, hash the password by itself
+ SHA1((unsigned char *) password, strlen(password), pwdigest);
- // first, hash the password by itself
- SHA1((unsigned char *) password, strlen(password), pwdigest);
+ // prefix the resulting hash with the provided seed
+ memcpy(&prefixedhash[0], &seed, sizeof(uint32_t));
+ memcpy(&prefixedhash[4], pwdigest, SHA_DIGEST_LENGTH);
- // prefix the resulting hash with the provided seed
- memcpy(&seed[0], data.GetData() + 4, sizeof(uint32_t));
- memcpy(&prefixedhash[0], &seed, sizeof(uint32_t));
- memcpy(&prefixedhash[4], pwdigest, SHA_DIGEST_LENGTH);
+ // hash again
+ SHA1((unsigned char *) prefixedhash, SHA_DIGEST_LENGTH + 4, pwdigest);
- // hash again
- SHA1((unsigned char *) prefixedhash, SHA_DIGEST_LENGTH + 4, pwdigest);
+ // Build the response packet
+ const char pw_rsphdr[] = { 0x03, 0x00, 0x00, 0x00 };
+ memcpy(&pw_response[0], pw_rsphdr, sizeof(pw_rsphdr));
+ memcpy(&pw_response[4], pwdigest, SHA_DIGEST_LENGTH);
+ memcpy(&pw_response[24], special_flag, sizeof(special_flag));
- // Build the response packet
- const char pw_rsphdr[] = { 0x03, 0x00, 0x00, 0x00 };
- memcpy(&pw_response[0], pw_rsphdr, sizeof(pw_rsphdr));
- memcpy(&pw_response[4], pwdigest, SHA_DIGEST_LENGTH);
- memcpy(&pw_response[24], special_flag, sizeof(special_flag));
+ // Send the password response packet
+ m_dev.BulkWrite(write_ep, pw_response, sizeof(pw_response));
+ m_dev.BulkRead(read_ep, data);
+ ddout("IPModem: Read password response.\n" << data);
- // Send the password response packet
- m_dev.BulkWrite(write_ep, pw_response, sizeof(pw_response));
- m_dev.BulkRead(read_ep, data);
- ddout("IPModem read password response.\n" << data);
-
- // check response 04 00 00 00 .......
- // On the 8703e the seed is incremented, retries are reset to 10 when the password is accepted.
- // if( data.GetData()[0] == 0x04 && data.GetData()[8] == 0x0a ) {
- if( data.GetSize() >= 9 && data.GetData()[0] == 0x04 ) {
- if( memcmp(data.GetData() + 4, seed, sizeof(seed)) == 0 ) {
- ddout("IPModem invalid password.\n" << data);
- throw BadPassword("Password rejected by device.", data.GetData()[8], false);
- }
- ddout("IPModem password accepted.\n");
- // send "start"? packet
- m_dev.BulkWrite(write_ep, pw_start, sizeof(pw_start));
+ // Added for the BB Storm 9000's second password request
+ if( data.GetSize() >= 16 && data.GetData()[0] == 0x00 ) {
+ try {
+ m_dev.BulkRead(read_ep, data, 500);
+ ddout("IPModem: Null Response Packet:\n" << data);
+ }
+ catch( Usb::Timeout &to ) {
+ // do nothing on timeouts
+ ddout("IPModem: Null Response Timeout");
+ }
+ }
- // send packet with the last 8 bytes of the password hash (session_key?)
- //unsigned char pw_response[SHA_DIGEST_LENGTH + 8];
- unsigned char pw_rsphdr[] = { 0x00, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0xc2, 1, 0 };
+ // check response 04 00 00 00 .......
+ // On the 8703e the seed is incremented, retries are reset to 10 when the password is accepted.
+ // If data.GetData() + 4 is = to the orginal seed +1 or 00 00 00 00 then the password was acceppted.
+ // When data.GetData() + 4 is not 00 00 00 00 then data.GetData()[8] contains the number of password retrys left.
+ if( data.GetSize() >= 9 && data.GetData()[0] == 0x04 ) {
+ memcpy(&new_seed, data.GetData() + 4, sizeof(uint32_t));
+ seed++;
+ if( seed == new_seed || new_seed == 0 ) {
+ ddout("IPModem: Password accepted.\n");
+ // Create session key - last 8 bytes of the password hash
memcpy(&m_session_key[0], pwdigest + 12, sizeof(m_session_key));
- memcpy(&pw_response[0], pw_rsphdr, sizeof(pw_rsphdr));
- memcpy(&pw_response[16], pwdigest + 12, 8);
- //memcpy(&pw_response[16], m_session_key, 8);
- memcpy(&pw_response[24], special_flag, sizeof(special_flag));
- m_dev.BulkWrite(write_ep, pw_response, sizeof(pw_response));
// blank password hashes as we don't need these anymore
memset(pwdigest, 0, sizeof(pwdigest));
memset(prefixedhash, 0, sizeof(prefixedhash));
-
- // The modem should be ready to accept AT commands
return true;
}
-
- // Unknown packet
- ddout("IPModem Error unknown packet.\n" << data);
+ else {
+ ddout("IPModem: Invalid password.\n" << data);
+ throw BadPassword("Password rejected by device.", data.GetData()[8], false);
+ }
}
+ // Unknown packet
+ ddout("IPModem: Error unknown packet.\n" << data);
return false;
}
@@ -172,7 +155,7 @@ void *IpModem::DataReadThread(void *userptr)
if( data.GetSize() > 4 &&
memcmp(data.GetData() + data.GetSize() - 4, special_flag, sizeof(special_flag)) == 0 ) {
// log, then drop it on the floor for now
- ddout("IPModem special packet:\n" << data);
+ ddout("IPModem: Special packet:\n" << data);
continue;
}
@@ -190,7 +173,7 @@ void *IpModem::DataReadThread(void *userptr)
}
catch( Usb::Timeout &to ) {
// do nothing on timeouts
- ddout("Timeout in DataReadThread!");
+ ddout("IPModem: Timeout in DataReadThread!");
}
catch( std::exception &e ) {
eout("Exception in IpModem::DataReadThread: " << e.what());
@@ -207,7 +190,10 @@ void IpModem::Open(const char *password)
{
int read_ep = m_con.GetProbeResult().m_epModem.read;
int write_ep = m_con.GetProbeResult().m_epModem.write;
+ unsigned char response[28];
+ uint32_t seed;
Data data;
+
// check that we have endpoints for the modem
const Usb::EndpointPair &pair = m_con.GetProbeResult().m_epModem;
if( !pair.IsComplete() ) {
@@ -224,28 +210,110 @@ void IpModem::Open(const char *password)
m_dev.ClearHalt(pair.read);
m_dev.ClearHalt(pair.write);
- if( !password || strlen(password) == 0 ) {
- Data block(start, sizeof(start));
- Write(block);
+ // Send stop command
+ ddout("IPModem: Sending Stop Response:\n");
+ m_dev.BulkWrite(write_ep, stop, sizeof(stop));
+ try {
+ m_dev.BulkRead(read_ep, data, 500);
+ ddout("IPModem: Stop Response Packet:\n" << data);
}
- else {
- if( !SendPassword(password) ) {
- throw Barry::Error("IpModem:: Error sending password.");
+ catch( Usb::Timeout &to ) {
+ // do nothing on timeouts
+ ddout("IPModem: Stop Response Timeout");
+ }
+
+ // Send start commands to figure out if the device needs a password.
+ ddout("IPModem: Sending Start Response:\n");
+ m_dev.BulkWrite(write_ep, pw_start, sizeof(pw_start));
+ m_dev.BulkRead(read_ep, data, 5000);
+ ddout("IPModem: Start Response Packet:\n" << data);
+
+ // check for 02 00 00 00 SS SS SS SS RR 00 00 00 0a 00 00 00 PP PP PP PP PP 00 00 00 78 56 34 12
+ if( data.GetSize() >= 9 && data.GetData()[0] == 0x02 &&
+ memcmp(data.GetData() + data.GetSize() - 4, special_flag, sizeof(special_flag))== 0 ) {
+ // Got a password request packet
+ ddout("IPModem: Password request packet:\n" << data);
+
+ // Check how many retries are left
+ if( data.GetData()[8] < BARRY_MIN_PASSWORD_TRIES ) {
+ throw BadPassword("Fewer than " BARRY_MIN_PASSWORD_TRIES_ASC " password tries remaining in device. Refusing to proceed, to avoid device zapping itself. Use a Windows client, or re-cradle the device.",
+ data.GetData()[8],
+ true);
+ }
+ memcpy(&seed, data.GetData() + 4, sizeof(uint32_t));
+ // Send password
+ if( !SendPassword(password, seed) ) {
+ throw Barry::Error("IpModem: Error sending password.");
+ }
+
+ // Re-send "start" packet
+ ddout("IPModem: Re-sending Start Response:\n");
+ m_dev.BulkWrite(write_ep, pw_start, sizeof(pw_start));
+ m_dev.BulkRead(read_ep, data);
+ ddout("IPModem: Start Response Packet:\n" << data);
+
+ // send packet with the session_key
+ unsigned char response_header[] = { 0x00, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0xc2, 1, 0 };
+ memcpy(&response[0], response_header, sizeof(response_header));
+ memcpy(&response[16], m_session_key, sizeof(m_session_key));
+ memcpy(&response[24], special_flag, sizeof(special_flag));
+ ddout("IPModem: Sending Session key:\n");
+ m_dev.BulkWrite(write_ep, response, sizeof(response));
+ if( data.GetSize() >= 16 ) {
+ switch(data.GetData()[0])
+ {
+ case 0x00: // Null packet
+ break;
+
+ case 0x02: // password seed received
+ memcpy(&seed, data.GetData() + 4, sizeof(uint32_t));
+ if( !SendPassword( password, seed ) ) {
+ throw Barry::Error("IpModem: Error sending password.");
+ }
+ break;
+ case 0x04: // command accepted
+ break;
+
+ default: // ???
+ ddout("IPModem: Unknown response.\n");
+ break;
+ }
}
+
}
// see if the modem will respond to commands
const char modem_command[] = { "AT\r" };
+ //ddout("IPModem: Test command response.\n" << data);
m_dev.BulkWrite(write_ep, modem_command, strlen(modem_command));
m_dev.BulkRead(read_ep, data);
- ddout("IPModem:: AT command response.\n" << data);
+ ddout("IPModem: Test command response.\n" << data);
if( data.GetSize() >= 1 ) {
switch(data.GetData()[0])
{
- case 0x02: // password seed received
- throw BadPassword("This device requested a password.",
- data.GetSize() >= 9 ? data.GetData()[8] : 0, false);
+ case 0x00: // Null packet
+ try {
+ m_dev.BulkRead(read_ep, data, 5000);
+ ddout("IPModem: AT Response Packet:\n" << data);
+ }
+ catch( Usb::Timeout &to ) {
+ // do nothing on timeouts
+ ddout("IPModem: AT Response Timeout");
+ }
+ break;
+ case 0x02: // password seed received
+ if( !password || strlen(password) == 0 ) {
+ throw BadPassword("This device requested a password.",
+ data.GetSize() >= 9 ? data.GetData()[8] : 0, false);
+ }
+ else { // added for the Storm 9000
+ memcpy(&seed, data.GetData() + 4, sizeof(uint32_t));
+ if( !SendPassword( password, seed ) ) {
+ throw Barry::Error("IpModem: Error sending password.");
+ }
+ }
+ break;
case 0x04: // command accepted
break;
@@ -253,17 +321,18 @@ void IpModem::Open(const char *password)
throw BadPassword("This device requires a password.", 0, false);
default: // ???
- ddout("IPModem:: unknown AT command response.\n");
+ ddout("IPModem: Unknown AT command response.\n");
break;
}
}
+ ddout("IPModem: Modem Ready.\n");
// spawn read thread
m_continue_reading = true;
int ret = pthread_create(&m_modem_read_thread, NULL, &IpModem::DataReadThread, this);
if( ret ) {
m_continue_reading = false;
- throw Barry::ErrnoError("IpModem:: Error creating USB read thread.", ret);
+ throw Barry::ErrnoError("IpModem: Error creating USB read thread.", ret);
}
}
@@ -293,7 +362,7 @@ void IpModem::Close()
Data data;
//0 0 0 0 b0 0 0 0 0 0 0 0 0 c2 1 0 + session_key + special_flag
- ddout("IpModem:: Closing connection.");
+ ddout("IpModem: Closing connection.");
memset(end, 0, sizeof(end));
end[4] = 0xb0;
end[13] = 0xc2;
@@ -324,18 +393,18 @@ void IpModem::Close()
m_dev.BulkWrite(write_ep, stop, sizeof(stop));
try {
m_dev.BulkRead(read_ep, data, 5000);
- ddout("IPModem:: Close read packet:\n" << data);
+ ddout("IPModem: Close read packet:\n" << data);
}
catch( Usb::Timeout &to ) {
// do nothing on timeouts
- ddout("IPModem:: Close Read Timeout");
+ ddout("IPModem: Close Read Timeout");
}
// stop the read thread
if( m_continue_reading ) {
m_continue_reading = false;
pthread_join(m_modem_read_thread, NULL);
}
- ddout("IPmodem:: Closed!");
+ ddout("IPmodem: Closed!");
}
diff --git a/src/m_ipmodem.h b/src/m_ipmodem.h
index 23e5ffa..c58882f 100644
--- a/src/m_ipmodem.h
+++ b/src/m_ipmodem.h
@@ -59,7 +59,7 @@ private:
unsigned char m_session_key[8]; // = { 0x00, 0, 0, 0, 0, 0, 0, 0 };
private:
- BXLOCAL bool SendPassword(const char *password = 0);
+ BXLOCAL bool SendPassword(const char *password = 0, uint32_t seed = 0);
protected:
static void *DataReadThread(void *userptr);
Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/barry/F-9/.cvsignore,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- .cvsignore 12 Nov 2008 20:36:13 -0000 1.2
+++ .cvsignore 13 Jan 2009 03:45:16 -0000 1.3
@@ -1 +1 @@
-barry-0.14.tar.bz2
+barry-0.15-20090109.tar.bz2
Index: barry.spec
===================================================================
RCS file: /cvs/pkgs/rpms/barry/F-9/barry.spec,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- barry.spec 12 Nov 2008 20:36:13 -0000 1.1
+++ barry.spec 13 Jan 2009 03:45:16 -0000 1.2
@@ -1,26 +1,34 @@
-# Fedora 9/10 doesn't support opensync 0.22
+# Fedora 9/10/11 don't support opensync 0.22
%define with_opensync 1
-%if 0%{?fc9}
- %define with_opensync 0
-%endif
-%if 0%{?fc10}
+%if %{?fedora} > 8
%define with_opensync 0
%endif
Name: barry
-Version: 0.14
-Release: 4%{?dist}
+Version: 0.15
+Release: 0.4.20090109git%{?dist}
Summary: BlackBerry Desktop for Linux
Group: Applications/Productivity
License: GPLv2+
URL: http://www.netdirect.ca/downloads/barry
-Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.bz2
+# The source for this package was pulled from upstream's git. Use the following
+# commands to generate the tarball:
+# git clone git://repo.or.cz/barry.git
+# cd barry/maintainer
+# ./git-extract.sh 0 15 master
+# (cd build/barry* && ../../tar-prepare.sh)
+# (cd build && ../tar-create.sh 0 15)
+Source0: %{name}-%{version}-20090109.tar.bz2
Source1: %{name}.desktop
+# ip_modem password patch for the Blackberry Bold 9000
+# http://sourceforge.net/mailarchive/forum.php?thread_name=4968F513.1050909%40comcast.net&forum_name=barry-devel
+Patch0: barry-ipmodem.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: libusb-devel boost-devel desktop-file-utils gtkmm24-devel
-BuildRequires: libglademm24-devel libglade2-devel libtar-devel
+BuildRequires: libglademm24-devel libglade2-devel libtar-devel libtool
+BuildRequires: fuse-devel
Requires: initscripts
%description
@@ -60,7 +68,7 @@
Summary: BlackBerry Desktop for Linux - opensync plugin
Group: Applications/Productivity
BuildRequires: libopensync-devel
-Requires: libopensync
+Requires: libopensync == 0.22
%description opensync
Barry is a desktop toolset for managing your BlackBerry device.
@@ -72,6 +80,26 @@
%setup -q
%{__rm} -rf ./doc/www/*.php
%{__rm} -rf ./doc/www/*.sh
+%{__rm} -rf ./doc/www/doxygen/html/scoped__lock_8h__incl.map
+%{__rm} -rf ./doc/www/doxygen/html/classBarry_1_1ZeroPacket__inherit__graph.map
+%{__rm} -rf ./doc/www/doxygen/html/dataqueue_8h__incl.map
+%{__rm} -rf ./doc/www/doxygen/html/classBarry_1_1ZeroPacket__coll__graph.map
+%{__rm} -rf ./doc/www/doxygen/html/protostructs_8h__incl.map
+%{__rm} -rf ./doc/www/doxygen/html/classBarry_1_1DBPacket__inherit__graph.map
+%{__rm} -rf ./doc/www/doxygen/html/bcharge_8cc__incl.map
+%{__rm} -rf ./doc/www/doxygen/html/bidentify_8cc__incl.map
+%{__rm} -rf ./doc/www/doxygen/html/packet_8h__incl.map
+%{__rm} -rf ./doc/www/doxygen/html/strnlen_8h__incl.map
+%{__rm} -rf ./doc/www/doxygen/html/bs11nread_8cc__incl.map
+%{__rm} -rf ./doc/www/doxygen/html/bfuse_8cc__incl.map
+%{__rm} -rf ./doc/www/doxygen/html/btool_8cc__incl.map
+%{__rm} -rf ./doc/www/doxygen/html/pppob_8cc__incl.map
+%{__rm} -rf ./doc/www/doxygen/html/upldif_8cc__incl.map
+%{__rm} -rf ./doc/www/doxygen/html/brecsum_8cc__incl.map
+%{__rm} -rf ./doc/www/doxygen/html/breset_8cc__incl.map
+%{__rm} -rf ./doc/www/doxygen/html/endian_8h__incl.map
+%patch0 -p1
+
%build
# main tree
@@ -85,6 +113,10 @@
%{configure} PKG_CONFIG_PATH="..:$PKG_CONFIG_PATH" CXXFLAGS="-I../.." LDFLAGS="-L../../src"
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
+# Touch-magic to prevent auto* from running. Thank you Andreas Metzler.
+touch -r Makefile ./src/Makefile ./src/Makefile.am ./src/Makefile.in \
+ ./man/Makefile.am ./man/Makefile.in config.h config.h.in Makefile.am \
+ Makefile.in configure.ac aclocal.m4 configure
%{__make} %{?_smp_mflags}
cd ../
@@ -94,7 +126,6 @@
%{configure} PKG_CONFIG_PATH="..:$PKG_CONFIG_PATH" CXXFLAGS="-I../.." LDFLAGS="-L../../src"
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
-%{__make} %{?_smp_mflags}
cd ../
%endif
@@ -170,6 +201,25 @@
%postun libs -p /sbin/ldconfig
%changelog
+* Mon Jan 12 2009 Christopher D. Stover <quantumburnz at hotmail.com> 0.15-0.4.20090109git
+- release bump for new source
+
+* Mon Jan 12 2009 Christopher D. Stover <quantumburnz at hotmail.com> 0.15-0.3.20090109git
+- release bump for proper patch name
+
+* Mon Jan 12 2009 Christopher D. Stover <quantumburnz at hotmail.com> 0.15-0.2.20090109git
+- enable fuse module during build
+- include ip_modem password patch for the Blackberry Bold 9000
+
+* Mon Jan 12 2009 Christopher D. Stover <quantumburnz at hotmail.com> 0.15-0.1.20090109git
+- version/git bump
+
+* Thu Dec 18 2008 Petr Machata <pmachata at redhat.com> - 0.14-6
+- rebuild for new boost
+
+* Mon Nov 12 2008 Christopher D. Stover <quantumburnz at hotmail.com> 0.14-5
+- removed opensync support for F11
+
* Mon Nov 10 2008 Christopher D. Stover <quantumburnz at hotmail.com> 0.14-4
- merged gui with the main package
Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/barry/F-9/sources,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- sources 12 Nov 2008 20:36:13 -0000 1.2
+++ sources 13 Jan 2009 03:45:16 -0000 1.3
@@ -1 +1 @@
-8c93abd0011568b540b799d1faa9a625 barry-0.14.tar.bz2
+03f78f7a136eae0ca0b7310354a35afd barry-0.15-20090109.tar.bz2
- Previous message: rpms/audio-convert-mod/devel .cvsignore, 1.5, 1.6 audio-convert-mod.spec, 1.8, 1.9 sources, 1.5, 1.6 audio-convert-mod-3.45.4-lame.patch, 1.1, NONE
- Next message: rpms/gnome-scan/devel gnome-scan.spec,1.9,1.10
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the scm-commits
mailing list