summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/zsafe/zsafe.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/noncore/apps/zsafe/zsafe.cpp b/noncore/apps/zsafe/zsafe.cpp
index 824b841..0864293 100644
--- a/noncore/apps/zsafe/zsafe.cpp
+++ b/noncore/apps/zsafe/zsafe.cpp
@@ -1676,513 +1676,513 @@ void ZSafe::writeAllEntries()
1676 // oneEntry += si->text(3); 1676 // oneEntry += si->text(3);
1677 QString comment = si->text(3); 1677 QString comment = si->text(3);
1678 comment.replace (QRegExp("\n"), "<br>"); 1678 comment.replace (QRegExp("\n"), "<br>");
1679 oneEntry += comment; 1679 oneEntry += comment;
1680 oneEntry += "\""; 1680 oneEntry += "\"";
1681 // owarn << oneEntry << oendl; 1681 // owarn << oneEntry << oendl;
1682 t << oneEntry << endl; 1682 t << oneEntry << endl;
1683 1683
1684 // owarn << si->text(0) << oendl; 1684 // owarn << si->text(0) << oendl;
1685 } 1685 }
1686 } 1686 }
1687 f.close(); 1687 f.close();
1688} 1688}
1689 1689
1690void ZSafe::readAllEntries() 1690void ZSafe::readAllEntries()
1691{ 1691{
1692 QString fn = filename + ".txt"; 1692 QString fn = filename + ".txt";
1693 QFile f( fn ); 1693 QFile f( fn );
1694 if ( !f.open( IO_ReadOnly ) ) 1694 if ( !f.open( IO_ReadOnly ) )
1695 { 1695 {
1696#ifndef NO_OPIE 1696#ifndef NO_OPIE
1697 owarn << "Could not read file " << fn << oendl; 1697 owarn << "Could not read file " << fn << oendl;
1698#else 1698#else
1699 qWarning( QString("Could not read file %1").arg(fn), 2000 ); 1699 qWarning( QString("Could not read file %1").arg(fn), 2000 );
1700#endif 1700#endif
1701 QMessageBox::critical( 0, tr("ZSafe"), 1701 QMessageBox::critical( 0, tr("ZSafe"),
1702 tr("Could not import text file.") ); 1702 tr("Could not import text file.") );
1703 return; 1703 return;
1704 } 1704 }
1705 1705
1706 modified = true; 1706 modified = true;
1707 1707
1708 // clear the password list 1708 // clear the password list
1709 selectedItem = NULL; 1709 selectedItem = NULL;
1710 QListViewItem *i; 1710 QListViewItem *i;
1711 // step through all categories 1711 // step through all categories
1712 for (i = ListView->firstChild(); 1712 for (i = ListView->firstChild();
1713 i != NULL; 1713 i != NULL;
1714 i = i->nextSibling()) 1714 i = i->nextSibling())
1715 { 1715 {
1716 // step through all subitems 1716 // step through all subitems
1717 QListViewItem *si; 1717 QListViewItem *si;
1718 for (si = i->firstChild(); 1718 for (si = i->firstChild();
1719 si != NULL; ) 1719 si != NULL; )
1720 // si = si->nextSibling()) 1720 // si = si->nextSibling())
1721 { 1721 {
1722 QListViewItem *_si = si; 1722 QListViewItem *_si = si;
1723 si = si->nextSibling(); 1723 si = si->nextSibling();
1724 i->takeItem(_si); // remove from view list 1724 i->takeItem(_si); // remove from view list
1725 if (_si) delete _si; 1725 if (_si) delete _si;
1726 } 1726 }
1727 } 1727 }
1728 1728
1729#ifndef NO_OPIE 1729#ifndef NO_OPIE
1730 owarn << "ReadAllEntries(): " << oendl; 1730 owarn << "ReadAllEntries(): " << oendl;
1731#else 1731#else
1732 qWarning ("ReadAllEntries(): "); 1732 qWarning ("ReadAllEntries(): ");
1733#endif 1733#endif
1734 QTextStream t(&f); 1734 QTextStream t(&f);
1735 while ( !t.eof() ) 1735 while ( !t.eof() )
1736 { 1736 {
1737 QString s = t.readLine(); 1737 QString s = t.readLine();
1738 s.replace (QRegExp("\";\""), "\"|\""); 1738 s.replace (QRegExp("\";\""), "\"|\"");
1739 // char buffer[1024]; 1739 // char buffer[1024];
1740 int len=s.length()+1; 1740 int len=s.length()+1;
1741#ifdef WIN32 1741#ifdef WIN32
1742 char buffer[512]; 1742 char buffer[512];
1743#else 1743#else
1744 char buffer[len]; 1744 char buffer[len];
1745#endif 1745#endif
1746 strcpy (buffer, s); 1746 strcpy (buffer, s);
1747 1747
1748 QString name; 1748 QString name;
1749 QString user; 1749 QString user;
1750 QString password; 1750 QString password;
1751 QString comment; 1751 QString comment;
1752 1752
1753 // separete the entries 1753 // separete the entries
1754 char *i = strtok (buffer, "|"); 1754 char *i = strtok (buffer, "|");
1755 QString category(&i[1]); 1755 QString category(&i[1]);
1756 category.truncate(category.length() -1); 1756 category.truncate(category.length() -1);
1757 1757
1758 int idx=0; 1758 int idx=0;
1759 while (i = strtok (NULL, "|")) 1759 while (i = strtok (NULL, "|"))
1760 { 1760 {
1761 switch (idx) 1761 switch (idx)
1762 { 1762 {
1763 case 0: 1763 case 0:
1764 name = &i[1]; 1764 name = &i[1];
1765 name.truncate(name.length() -1); 1765 name.truncate(name.length() -1);
1766 // name 1766 // name
1767 break; 1767 break;
1768 case 1: 1768 case 1:
1769 // user 1769 // user
1770 user = &i[1]; 1770 user = &i[1];
1771 user.truncate(user.length() -1); 1771 user.truncate(user.length() -1);
1772 break; 1772 break;
1773 case 2: 1773 case 2:
1774 // password 1774 // password
1775 password = &i[1]; 1775 password = &i[1];
1776 password.truncate(password.length() -1); 1776 password.truncate(password.length() -1);
1777 break; 1777 break;
1778 case 3: 1778 case 3:
1779 // comment 1779 // comment
1780 comment = &i[1]; 1780 comment = &i[1];
1781 comment.truncate(comment.length() -1); 1781 comment.truncate(comment.length() -1);
1782 break; 1782 break;
1783 } 1783 }
1784 idx++; 1784 idx++;
1785 } 1785 }
1786 1786
1787 Category *cat= categories.find (category); 1787 Category *cat= categories.find (category);
1788 if (cat) 1788 if (cat)
1789 { 1789 {
1790 // use the existend item 1790 // use the existend item
1791 QListViewItem *catItem = cat->getListItem(); 1791 QListViewItem *catItem = cat->getListItem();
1792 if (catItem) 1792 if (catItem)
1793 { 1793 {
1794 QListViewItem * item = new ShadedListItem( 0, catItem ); 1794 QListViewItem * item = new ShadedListItem( 0, catItem );
1795 item->setText( 0, tr( name ) ); 1795 item->setText( 0, tr( name ) );
1796 item->setText( 1, tr( user ) ); 1796 item->setText( 1, tr( user ) );
1797 item->setText( 2, tr( password ) ); 1797 item->setText( 2, tr( password ) );
1798 item->setText( 3, tr( comment ) ); 1798 item->setText( 3, tr( comment ) );
1799 1799
1800 catItem->setOpen( TRUE ); 1800 catItem->setOpen( TRUE );
1801 } 1801 }
1802 } 1802 }
1803 else 1803 else
1804 { 1804 {
1805 QListViewItem *catI = new ShadedListItem( 1, ListView ); 1805 QListViewItem *catI = new ShadedListItem( 1, ListView );
1806 // create and insert a new item 1806 // create and insert a new item
1807 QListViewItem * item = new ShadedListItem( 0, catI ); 1807 QListViewItem * item = new ShadedListItem( 0, catI );
1808 item->setText( 0, tr( name ) ); 1808 item->setText( 0, tr( name ) );
1809 item->setText( 1, tr( user ) ); 1809 item->setText( 1, tr( user ) );
1810 item->setText( 2, tr( password ) ); 1810 item->setText( 2, tr( password ) );
1811 item->setText( 3, tr( comment ) ); 1811 item->setText( 3, tr( comment ) );
1812 1812
1813 catI->setOpen( TRUE ); 1813 catI->setOpen( TRUE );
1814 1814
1815 Category *c1 = new Category(); 1815 Category *c1 = new Category();
1816 c1->setCategoryName(category); 1816 c1->setCategoryName(category);
1817 1817
1818 QString icon; 1818 QString icon;
1819 QString fullIconPath; 1819 QString fullIconPath;
1820 QPixmap *pix; 1820 QPixmap *pix;
1821// #ifndef WIN32 1821// #ifndef WIN32
1822 icon = conf->readEntry(APP_KEY+category); 1822 icon = conf->readEntry(APP_KEY+category);
1823// #endif 1823// #endif
1824 bool isIconAv = false; 1824 bool isIconAv = false;
1825 if (!icon.isEmpty() && !icon.isNull()) 1825 if (!icon.isEmpty() && !icon.isNull())
1826 { 1826 {
1827 // build the full path 1827 // build the full path
1828 fullIconPath = iconPath + icon; 1828 fullIconPath = iconPath + icon;
1829 pix = new QPixmap (fullIconPath); 1829 pix = new QPixmap (fullIconPath);
1830 if (!pix->isNull()) 1830 if (!pix->isNull())
1831 { 1831 {
1832 QImage img = pix->convertToImage(); 1832 QImage img = pix->convertToImage();
1833 pix->convertFromImage(img.smoothScale(14,14)); 1833 pix->convertFromImage(img.smoothScale(14,14));
1834 c1->setIconName (icon); 1834 c1->setIconName (icon);
1835 c1->setIcon (*pix); 1835 c1->setIcon (*pix);
1836 isIconAv = true; 1836 isIconAv = true;
1837 } 1837 }
1838 } 1838 }
1839 if (!isIconAv) 1839 if (!isIconAv)
1840 { 1840 {
1841 c1->setIcon (*getPredefinedIcon(category)); 1841 c1->setIcon (*getPredefinedIcon(category));
1842 } 1842 }
1843 c1->setListItem (catI); 1843 c1->setListItem (catI);
1844 c1->initListItem(); 1844 c1->initListItem();
1845 categories.insert (c1->getCategoryName(), c1); 1845 categories.insert (c1->getCategoryName(), c1);
1846 } 1846 }
1847 1847
1848 } 1848 }
1849 f.close(); 1849 f.close();
1850 1850
1851} 1851}
1852#endif // UNUSED 1852#endif // UNUSED
1853 1853
1854void ZSafe::resume(int) 1854void ZSafe::resume(int)
1855{ 1855{
1856#ifndef NO_OPIE 1856#ifndef NO_OPIE
1857 owarn << "Resume" << oendl; 1857 owarn << "Resume" << oendl;
1858#endif 1858#endif
1859 // hide the main window 1859 // hide the main window
1860 1860
1861 if ( !showpwd ) 1861 if ( !showpwd )
1862 { 1862 {
1863 infoForm->hide(); 1863 infoForm->hide();
1864 // open zsafe again 1864 // open zsafe again
1865 m_password = ""; 1865 m_password = "";
1866 selectedItem = NULL; 1866 selectedItem = NULL;
1867 1867
1868 // clear the password list 1868 // clear the password list
1869 QListViewItem *i; 1869 QListViewItem *i;
1870 // step through all categories 1870 // step through all categories
1871 for (i = ListView->firstChild(); 1871 for (i = ListView->firstChild();
1872 i != NULL; 1872 i != NULL;
1873 i = i->nextSibling()) 1873 i = i->nextSibling())
1874 { 1874 {
1875 // step through all subitems 1875 // step through all subitems
1876 QListViewItem *si; 1876 QListViewItem *si;
1877 for (si = i->firstChild(); 1877 for (si = i->firstChild();
1878 si != NULL; ) 1878 si != NULL; )
1879 { 1879 {
1880 QListViewItem *_si = si; 1880 QListViewItem *_si = si;
1881 si = si->nextSibling(); 1881 si = si->nextSibling();
1882 i->takeItem(_si); // remove from view list 1882 i->takeItem(_si); // remove from view list
1883 if (_si) delete _si; 1883 if (_si) delete _si;
1884 } 1884 }
1885 } 1885 }
1886 1886
1887 // ask for password and read again 1887 // ask for password and read again
1888 openDocument(filename); 1888 openDocument(filename);
1889 } 1889 }
1890} 1890}
1891 1891
1892//--------------------------------------------- 1892//---------------------------------------------
1893 1893
1894 1894
1895bool ZSafe::openDocument(const char* _filename, const char* ) 1895bool ZSafe::openDocument(const char* _filename, const char* )
1896{ 1896{
1897 int retval; 1897 int retval;
1898 char* entry[FIELD_SIZE]; 1898 char* entry[FIELD_SIZE];
1899// #ifndef WIN32 1899// #ifndef WIN32
1900 int validationFlag = conf->readNumEntry(APP_KEY+"valzsafe", 1); 1900 int validationFlag = conf->readNumEntry(APP_KEY+"valzsafe", 1);
1901// #else 1901// #else
1902 // int validationFlag = 1; 1902 // int validationFlag = 1;
1903// #endif 1903// #endif
1904 1904
1905 int pwdOk = 0; 1905 int pwdOk = 0;
1906 int numberOfTries = 3; 1906 int numberOfTries = 3;
1907 for (int i=0; i < numberOfTries; i++) 1907 for (int i=0; i < numberOfTries; i++)
1908 { 1908 {
1909 QFile f(_filename); 1909 QFile f(_filename);
1910 if (f.exists()) 1910 if (f.exists())
1911 { 1911 {
1912 // ask with a dialog for the password 1912 // ask with a dialog for the password
1913 if (m_password.isEmpty()) 1913 if (m_password.isEmpty())
1914 getDocPassword(tr("Enter Password")); 1914 getDocPassword(tr("Enter Password"));
1915 if (m_password.isEmpty() && validationFlag == 0) 1915 if (m_password.isEmpty() && validationFlag == 0)
1916 { 1916 {
1917#ifndef NO_OPIE 1917#ifndef NO_OPIE
1918 owarn << "Wrong password" << oendl; 1918 owarn << "Wrong password" << oendl;
1919#else 1919#else
1920 qWarning ("Wrong password"); 1920 qWarning ("Wrong password");
1921#endif 1921#endif
1922 QMessageBox::critical( 0, tr("ZSafe"), 1922 QMessageBox::critical( 0, tr("ZSafe"),
1923 tr("Wrong password.\n\nZSafe will now exit.") ); 1923 tr("Wrong password.\n\nZSafe will now exit.") );
1924 exitZs (1); 1924 exitZs (1);
1925 } 1925 }
1926 1926
1927 retval = loadInit(_filename, m_password); 1927 retval = loadInit(_filename, m_password);
1928 if (retval != PWERR_GOOD) 1928 if (retval != PWERR_GOOD)
1929 { 1929 {
1930#ifndef NO_OPIE 1930#ifndef NO_OPIE
1931 owarn << "Error loading Document" << oendl; 1931 owarn << "Error loading Document" << oendl;
1932#lese 1932#else
1933 qWarning ("Error loading Document"); 1933 qWarning ("Error loading Document");
1934#endif 1934#endif
1935 return false; 1935 return false;
1936 } 1936 }
1937 } 1937 }
1938 else 1938 else
1939 { 1939 {
1940#ifdef WIN32 1940#ifdef WIN32
1941 this->setCaption("Qt ZSafe"); 1941 this->setCaption("Qt ZSafe");
1942#else 1942#else
1943 this->setCaption("ZSafe"); 1943 this->setCaption("ZSafe");
1944#endif 1944#endif
1945 filename = ""; 1945 filename = "";
1946 return false; 1946 return false;
1947 } 1947 }
1948 1948
1949 1949
1950 // load the validation entry 1950 // load the validation entry
1951 if (validationFlag == 0) 1951 if (validationFlag == 0)
1952 { 1952 {
1953 pwdOk = 1; 1953 pwdOk = 1;
1954 break; 1954 break;
1955 } 1955 }
1956 1956
1957 retval = loadEntry(entry); 1957 retval = loadEntry(entry);
1958 if (retval == 1 && 1958 if (retval == 1 &&
1959 !strcmp (entry[0], "ZSAFECATEGORY") && 1959 !strcmp (entry[0], "ZSAFECATEGORY") &&
1960 !strcmp (entry[1], "name") && 1960 !strcmp (entry[1], "name") &&
1961 !strcmp (entry[2], "username") && 1961 !strcmp (entry[2], "username") &&
1962 !strcmp (entry[3], "password") && 1962 !strcmp (entry[3], "password") &&
1963 !strcmp (entry[4], "comment") ) 1963 !strcmp (entry[4], "comment") )
1964 { 1964 {
1965 for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]); 1965 for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]);
1966 pwdOk = 1; 1966 pwdOk = 1;
1967 break; 1967 break;
1968 } 1968 }
1969 else 1969 else
1970 // for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]); 1970 // for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]);
1971 fclose (fd); 1971 fclose (fd);
1972 m_password = ""; 1972 m_password = "";
1973 1973
1974 if (i < numberOfTries - 1) 1974 if (i < numberOfTries - 1)
1975 { 1975 {
1976 switch( QMessageBox::warning( this, tr("ZSafe"), 1976 switch( QMessageBox::warning( this, tr("ZSafe"),
1977 tr("Wrong password.\nEnter again?"), 1977 tr("Wrong password.\nEnter again?"),
1978 tr("&Yes"), tr("&No."), 1978 tr("&Yes"), tr("&No."),
1979 0 1979 0
1980 ) ) 1980 ) )
1981 { 1981 {
1982 case 1: // No 1982 case 1: // No
1983 exitZs (1); 1983 exitZs (1);
1984 break; 1984 break;
1985 case 0: // Yes 1985 case 0: // Yes
1986 continue; 1986 continue;
1987 } 1987 }
1988 } 1988 }
1989 } 1989 }
1990 if (pwdOk == 0) 1990 if (pwdOk == 0)
1991 { 1991 {
1992 // unset the document entry 1992 // unset the document entry
1993 conf->writeEntry(APP_KEY+"document", "INVALIDPWD"); 1993 conf->writeEntry(APP_KEY+"document", "INVALIDPWD");
1994 if (conf) 1994 if (conf)
1995 delete conf; 1995 delete conf;
1996 1996
1997 exitZs (1); 1997 exitZs (1);
1998 } 1998 }
1999 1999
2000 2000
2001 retval = loadEntry(entry); 2001 retval = loadEntry(entry);
2002 2002
2003 int numberOfEntries=0; 2003 int numberOfEntries=0;
2004 while (retval == 1) { 2004 while (retval == 1) {
2005 2005
2006 QString category( QString::fromUtf8(entry[0]) ); 2006 QString category( QString::fromUtf8(entry[0]) );
2007 QString name( QString::fromUtf8(entry[1]) ); 2007 QString name( QString::fromUtf8(entry[1]) );
2008 QString user( QString::fromUtf8(entry[2]) ); 2008 QString user( QString::fromUtf8(entry[2]) );
2009 QString password( QString::fromUtf8(entry[3]) ); 2009 QString password( QString::fromUtf8(entry[3]) );
2010 QString comment( QString::fromUtf8(entry[4]) ); 2010 QString comment( QString::fromUtf8(entry[4]) );
2011 QString field5( QString::fromUtf8(entry[5]) ); 2011 QString field5( QString::fromUtf8(entry[5]) );
2012 QString field6( QString::fromUtf8(entry[6]) ); 2012 QString field6( QString::fromUtf8(entry[6]) );
2013 // add the subitems to the categories 2013 // add the subitems to the categories
2014 2014
2015 Category *cat= categories.find (category); 2015 Category *cat= categories.find (category);
2016 if (cat) 2016 if (cat)
2017 { 2017 {
2018 // use the existend item 2018 // use the existend item
2019 QListViewItem *catItem = cat->getListItem(); 2019 QListViewItem *catItem = cat->getListItem();
2020 if (catItem) 2020 if (catItem)
2021 { 2021 {
2022 QListViewItem * item = new ShadedListItem( 0, catItem ); 2022 QListViewItem * item = new ShadedListItem( 0, catItem );
2023 item->setText( 0, tr( name ) ); 2023 item->setText( 0, tr( name ) );
2024 item->setText( 1, tr( user ) ); 2024 item->setText( 1, tr( user ) );
2025 item->setText( 2, tr( password ) ); 2025 item->setText( 2, tr( password ) );
2026 item->setText( 3, tr( comment ) ); 2026 item->setText( 3, tr( comment ) );
2027 item->setText( 4, tr( field5 ) ); 2027 item->setText( 4, tr( field5 ) );
2028 item->setText( 5, tr( field6 ) ); 2028 item->setText( 5, tr( field6 ) );
2029 2029
2030 if (expandTree) 2030 if (expandTree)
2031 catItem->setOpen( TRUE ); 2031 catItem->setOpen( TRUE );
2032 numberOfEntries++; 2032 numberOfEntries++;
2033 } 2033 }
2034 } 2034 }
2035 else 2035 else
2036 { 2036 {
2037 QListViewItem *catI = new ShadedListItem( 1, ListView ); 2037 QListViewItem *catI = new ShadedListItem( 1, ListView );
2038 // create and insert a new item 2038 // create and insert a new item
2039 QListViewItem * item = new ShadedListItem( 0, catI ); 2039 QListViewItem * item = new ShadedListItem( 0, catI );
2040 2040
2041 item->setText( 0, tr( name ) ); 2041 item->setText( 0, tr( name ) );
2042 item->setText( 1, tr( user ) ); 2042 item->setText( 1, tr( user ) );
2043 item->setText( 2, tr( password ) ); 2043 item->setText( 2, tr( password ) );
2044 item->setText( 3, tr( comment ) ); 2044 item->setText( 3, tr( comment ) );
2045 item->setText( 4, tr( field5 ) ); 2045 item->setText( 4, tr( field5 ) );
2046 item->setText( 5, tr( field6 ) ); 2046 item->setText( 5, tr( field6 ) );
2047 2047
2048 if (expandTree) 2048 if (expandTree)
2049 catI->setOpen( TRUE ); 2049 catI->setOpen( TRUE );
2050 2050
2051 Category *c1 = new Category(); 2051 Category *c1 = new Category();
2052 c1->setCategoryName(category); 2052 c1->setCategoryName(category);
2053 2053
2054 QString icon; 2054 QString icon;
2055 QString fullIconPath; 2055 QString fullIconPath;
2056 QPixmap *pix; 2056 QPixmap *pix;
2057// #ifndef WIN32 2057// #ifndef WIN32
2058 icon = conf->readEntry(APP_KEY+category); 2058 icon = conf->readEntry(APP_KEY+category);
2059// #endif 2059// #endif
2060 bool isIconAv = false; 2060 bool isIconAv = false;
2061 if (!icon.isEmpty() && !icon.isNull()) 2061 if (!icon.isEmpty() && !icon.isNull())
2062 { 2062 {
2063 // build the full path 2063 // build the full path
2064 fullIconPath = iconPath + icon; 2064 fullIconPath = iconPath + icon;
2065 pix = new QPixmap (fullIconPath); 2065 pix = new QPixmap (fullIconPath);
2066 if (!pix->isNull()) 2066 if (!pix->isNull())
2067 { 2067 {
2068 QImage img = pix->convertToImage(); 2068 QImage img = pix->convertToImage();
2069 pix->convertFromImage(img.smoothScale(14,14)); 2069 pix->convertFromImage(img.smoothScale(14,14));
2070 c1->setIconName (icon); 2070 c1->setIconName (icon);
2071 c1->setIcon (*pix); 2071 c1->setIcon (*pix);
2072 isIconAv = true; 2072 isIconAv = true;
2073 } 2073 }
2074 } 2074 }
2075 if (!isIconAv) 2075 if (!isIconAv)
2076 { 2076 {
2077 c1->setIcon (*getPredefinedIcon(category)); 2077 c1->setIcon (*getPredefinedIcon(category));
2078 } 2078 }
2079 2079
2080 c1->setListItem (catI); 2080 c1->setListItem (catI);
2081 c1->initListItem(); 2081 c1->initListItem();
2082 categories.insert (c1->getCategoryName(), c1); 2082 categories.insert (c1->getCategoryName(), c1);
2083 numberOfEntries++; 2083 numberOfEntries++;
2084 } 2084 }
2085 2085
2086 for (int count = 0; count < FIELD_SIZE; count++) { 2086 for (int count = 0; count < FIELD_SIZE; count++) {
2087 free(entry[count]); 2087 free(entry[count]);
2088 } 2088 }
2089 retval = loadEntry(entry); 2089 retval = loadEntry(entry);
2090 if (retval == 2) { 2090 if (retval == 2) {
2091 // m_parent->slotStatusHelpMsg("Last entry loaded"); 2091 // m_parent->slotStatusHelpMsg("Last entry loaded");
2092 } 2092 }
2093 } // end while 2093 } // end while
2094 2094
2095 if (numberOfEntries == 0) 2095 if (numberOfEntries == 0)
2096 { 2096 {
2097 2097
2098 switch( QMessageBox::warning( this, tr("ZSafe"), 2098 switch( QMessageBox::warning( this, tr("ZSafe"),
2099 tr("Empty document or\nwrong password.\nContinue?"), 2099 tr("Empty document or\nwrong password.\nContinue?"),
2100 tr("&No"), tr("&Yes."), 2100 tr("&No"), tr("&Yes."),
2101 0 2101 0
2102 ) ) { 2102 ) ) {
2103 case 0: // No 2103 case 0: // No
2104 retval = loadFinalize(); 2104 retval = loadFinalize();
2105 exitZs (1); 2105 exitZs (1);
2106 break; 2106 break;
2107 case 1: // Yes 2107 case 1: // Yes
2108 break; 2108 break;
2109 } 2109 }
2110 } 2110 }
2111 2111
2112 retval = loadFinalize(); 2112 retval = loadFinalize();
2113 2113
2114 return true; 2114 return true;
2115} 2115}
2116 2116
2117int ZSafe::loadInit(const char* _filename, const char *password) 2117int ZSafe::loadInit(const char* _filename, const char *password)
2118{ 2118{
2119 unsigned int j = 0; 2119 unsigned int j = 0;
2120 unsigned int keylength=0; 2120 unsigned int keylength=0;
2121 int count=0, count2=0, count3=0; 2121 int count=0, count2=0, count3=0;
2122 unsigned char charbuf[8]; 2122 unsigned char charbuf[8];
2123 unsigned short ciphertext[4]; 2123 unsigned short ciphertext[4];
2124 char key[128]; 2124 char key[128];
2125 Krc2* krc2 = new Krc2(); 2125 Krc2* krc2 = new Krc2();
2126 2126
2127 fd = fopen (_filename, "rb"); 2127 fd = fopen (_filename, "rb");
2128 2128
2129 QFileInfo f (_filename); 2129 QFileInfo f (_filename);
2130 load_buffer_length = f.size(); 2130 load_buffer_length = f.size();
2131 load_buffer_length = ((load_buffer_length / 1024)+1) * 1024 * 2; 2131 load_buffer_length = ((load_buffer_length / 1024)+1) * 1024 * 2;
2132 2132
2133 if (fd == NULL) 2133 if (fd == NULL)
2134 return PWERR_OPEN; 2134 return PWERR_OPEN;
2135 2135
2136 buffer = (char *)malloc(load_buffer_length); 2136 buffer = (char *)malloc(load_buffer_length);
2137 for (j = 0; password[j] != '\0'; j++) { 2137 for (j = 0; password[j] != '\0'; j++) {
2138 key[j] = password[j]; 2138 key[j] = password[j];
2139 } 2139 }
2140 keylength = j; 2140 keylength = j;
2141 krc2->rc2_expandkey (key, keylength, 128); 2141 krc2->rc2_expandkey (key, keylength, 128);
2142 2142
2143#ifndef WIN32 2143#ifndef WIN32
2144 size = read(fileno (fd), (unsigned char *) (charbuf + count), 8); 2144 size = read(fileno (fd), (unsigned char *) (charbuf + count), 8);
2145#else 2145#else
2146 size = fread ((unsigned char *) (charbuf + count), sizeof(unsigned char), 8, fd); 2146 size = fread ((unsigned char *) (charbuf + count), sizeof(unsigned char), 8, fd);
2147#endif 2147#endif
2148 2148
2149 if (size < 8) 2149 if (size < 8)
2150 return PWERR_DATA; 2150 return PWERR_DATA;
2151 2151
2152 for (count = 0; count < 4; count++) { 2152 for (count = 0; count < 4; count++) {
2153 count2 = count << 1; 2153 count2 = count << 1;
2154 iv[count] = charbuf[count2] << 8; 2154 iv[count] = charbuf[count2] << 8;
2155 iv[count] += charbuf[count2 + 1]; 2155 iv[count] += charbuf[count2 + 1];
2156 } 2156 }
2157 2157
2158 size = 0; 2158 size = 0;
2159 bufferIndex = 0; 2159 bufferIndex = 0;
2160#ifndef WIN32 2160#ifndef WIN32
2161 while ((count = read (fileno (fd), (unsigned char *) charbuf, 8)) > 0) { 2161 while ((count = read (fileno (fd), (unsigned char *) charbuf, 8)) > 0) {
2162 while (count < 8) { 2162 while (count < 8) {
2163 count2 = read (fileno (fd), (unsigned char *) (charbuf + count), 8); 2163 count2 = read (fileno (fd), (unsigned char *) (charbuf + count), 8);
2164#else 2164#else
2165 while ((count = fread ((unsigned char *) (charbuf), sizeof(unsigned char), 8, fd)) > 0) { 2165 while ((count = fread ((unsigned char *) (charbuf), sizeof(unsigned char), 8, fd)) > 0) {
2166 while (count < 8) { 2166 while (count < 8) {
2167 count2 = fread ((unsigned char *) (charbuf + count), sizeof(unsigned char), 8, fd); 2167 count2 = fread ((unsigned char *) (charbuf + count), sizeof(unsigned char), 8, fd);
2168#endif 2168#endif
2169 if (count2 == 0) { 2169 if (count2 == 0) {
2170 return PWERR_DATA; 2170 return PWERR_DATA;
2171 } 2171 }
2172 count += count2; 2172 count += count2;
2173 } /* while (count < 8) */ 2173 } /* while (count < 8) */
2174 2174
2175 size += 8; 2175 size += 8;
2176 for (count2 = 0; count2 < 8; count2 += 2) { 2176 for (count2 = 0; count2 < 8; count2 += 2) {
2177 count3 = count2 >> 1; 2177 count3 = count2 >> 1;
2178 ciphertext[count3] = charbuf[count2] << 8; 2178 ciphertext[count3] = charbuf[count2] << 8;
2179 ciphertext[count3] += charbuf[count2 + 1]; 2179 ciphertext[count3] += charbuf[count2 + 1];
2180 2180
2181 plaintext[count3] = ciphertext[count3] ^ iv[count3]; 2181 plaintext[count3] = ciphertext[count3] ^ iv[count3];
2182 iv[count3] = plaintext[count3]; 2182 iv[count3] = plaintext[count3];
2183 } /* for (count2) */ 2183 } /* for (count2) */
2184 2184
2185 krc2->rc2_decrypt (plaintext); 2185 krc2->rc2_decrypt (plaintext);
2186 memcpy ((unsigned char *) (buffer + bufferIndex), plaintext, 8); 2186 memcpy ((unsigned char *) (buffer + bufferIndex), plaintext, 8);
2187 bufferIndex += 8; 2187 bufferIndex += 8;
2188 buffer[bufferIndex + 1] = '\0'; 2188 buffer[bufferIndex + 1] = '\0';