From 6317b1b649d442c7bc1957e701b16c67b3a92ac3 Mon Sep 17 00:00:00 2001 From: Norbert Moutarde Date: Fri, 14 Jun 2013 14:21:06 +0200 Subject: [PATCH 1/1] first release --- Notes.txt | 11 +++++ cp-bin.sh | 1 + diary-shell | Bin 0 -> 64831 bytes howto-compile-alwaysdata.com.sh | 2 + howto-compile-openbsd | 2 + howto-compile.sh | 2 + main.cpp | 84 ++++++++++++++++++++++++++++++++ tables1.sql | 22 +++++++++ test-diary-shell.sh | 1 + 9 files changed, 125 insertions(+) create mode 100644 Notes.txt create mode 100755 cp-bin.sh create mode 100755 diary-shell create mode 100755 howto-compile-alwaysdata.com.sh create mode 100755 howto-compile-openbsd create mode 100755 howto-compile.sh create mode 100644 main.cpp create mode 100755 tables1.sql create mode 100755 test-diary-shell.sh diff --git a/Notes.txt b/Notes.txt new file mode 100644 index 0000000..64c892d --- /dev/null +++ b/Notes.txt @@ -0,0 +1,11 @@ +Procédure de compilation en ligne de commande : +g++ main.cpp sqldb.cpp -o sqlDB -L /opt/PostgreSQL/9.2/lib -lpq +où -L est l'indicateur du répertoire où se trouve la librairie libpq.so +et où -lpq indique le nom de la librairie (libpq.so) : -l est l'indicateur de la librairie et pq le nom de la librairie à laquelle on enlève lib et l'extension .so (.a sous d'autres OS) +Pour exécuter le programme sqlDB il suffit de lancer la commande ./sqlDB sans paramètres (et les paramètres par défaut seront utilisés) ou : +./sqlDB localhost 5433 base01 bernard mz182001 10 si on indique TOUS les paramètres. +Ce sont bien sûr mes paramètres et le résultat est : +Début du programme './sqlDB'. Nombre de paramètres reçus : 7 +Chaîne de connection: host=localhost port=5433 dbname=base01 user=bernard password=mz182001 connect_timeout=10 +La connection à la base est Ok +Fin du programme diff --git a/cp-bin.sh b/cp-bin.sh new file mode 100755 index 0000000..a864c2a --- /dev/null +++ b/cp-bin.sh @@ -0,0 +1 @@ +cp diary-shell /usr/local/bin/ diff --git a/diary-shell b/diary-shell new file mode 100755 index 0000000000000000000000000000000000000000..0b9ecbc13ced1153ebd27d8e059123fdca345986 GIT binary patch literal 64831 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 literal 0 HcmV?d00001 diff --git a/howto-compile-alwaysdata.com.sh b/howto-compile-alwaysdata.com.sh new file mode 100755 index 0000000..a796805 --- /dev/null +++ b/howto-compile-alwaysdata.com.sh @@ -0,0 +1,2 @@ +rm ~/diary-shell +g++ main.cpp ../sqldb.cpp -o ~/diary-shell -I/usr/include/postgresql/ -I.. -lpq diff --git a/howto-compile-openbsd b/howto-compile-openbsd new file mode 100755 index 0000000..34d4e4c --- /dev/null +++ b/howto-compile-openbsd @@ -0,0 +1,2 @@ +#g++ main.cpp -I/usr/local/include/postgresql/ +g++ main.cpp sqldb.cpp -o diary-shell -L /usr/local/lib -I/usr/local/include/postgresql -lpq diff --git a/howto-compile.sh b/howto-compile.sh new file mode 100755 index 0000000..2b3a7c7 --- /dev/null +++ b/howto-compile.sh @@ -0,0 +1,2 @@ +rm diary-shell +g++ main.cpp ../sqldb.cpp -o diary-shell -L /usr/lib -I/usr/include/postgresql -I.. -lpq -fpermissive diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..c03a134 --- /dev/null +++ b/main.cpp @@ -0,0 +1,84 @@ +// main.cpp +#include +#include "sqldb.h" +#include +#include + +using namespace std; +string date(string a)//transform any date format (in help) to "YYYY-MM-DD HH:MM:SS.XXXXXX" +{ + /*int y[4], m, d, h, m, s, x; + stringstream ss(a); + ss>>y>>"-">>m>>"-">>d>>" ">>h>>":">>m>>":">>s>>".">>x; + return ss.str();*/ +} +void help() +{ + + cout<<"command : var, now, ls, rm {n°}, rm date1 date2, status, date {arg}, help, alias (-/+list/+add),\n"; + cout<<"select SQL command, \"SQL select\"\n"; +} + + + +int main(int argc, char *argv[]) +{ + cout << "Début du programme '" << argv[0] << "'. Nombre de paramètres reçus : " << argc << endl; + sqlpg diary; + string tmp, rep, shell="? "; + int hm; +do{ + hm=diary.hmRecord(); + cout< words; // Create vector to hold our words + stringstream ss(rep); // Insert the string into a stream + //cut rep into words[0], words[1], ... + while (ss >> buf) words.push_back(buf); + if(words.size()==0)break;//quit + else if (words[0]=="w") diary.exec(words); + else if (words[0]=="p") diary.print(); + else if (words[0]=="help") help(); + else if (words[0]=="status") diary.status(); + else if (words[0]=="rm"){// little useless + if (words.size()==2){// cmd : rm "id" + diary.deletetuple(words[1]); + } + else if (words.size()==3){// cmd : rm "date1" "date2" + string date1=words[1], date2=words[2]; + diary.deletedate(date1, date2); + } + } + else if (words[0]=="var") diary.var(); + else if (words[0]=="now") cout<