C501 ID PSN : Ur-501 | Bonjour,
Je cherchais à programmer un petit logiciel de serveur d'impression sous UNIX (ici ca sera mac, mais je vois rien qui empècherait sa diffusion sur linux) mais deux points bloquent franchement sans que je sache pourquoi... Ca fait des mois que je suis dessus (noob mais accroché) donc bon j'ai décidé de me tourner vers vous ...
L'idée était pourtant simple :
- Un fichier pour les Noms (N)
- Un parallèle pour les mots de passe (M)
- Un pour les quotas (tj écrit dans le même ordre que les noms et mdp) (Q)
- et deux fichiers pour les opérations sur les quotas, un pour pouvoir écrire les nouveaux quotas après chaque impression (Qc) , un pour réinitialiser les compteurs tous les mois (Qb) (un petit script bash s'en occupe)
Mais j'ai deux problèmes :
- le système de réécriture de quota ne fonctionne pas, il n'écrit que le chiffre qui a baissé en oubliant tous les autres quotas d'avant (ou d'après ca jai pas testé)
- la fonction CUPS que je n'ai pas comprise malgré les tutos sur leur site Donc voila, si vous pouviez m'aider sur ces points, la réponse est sûrement très bête mais je ne la vois pas. Je m'acharne là dessus pour une association donc rassurez vous on a pas payé un noob comme moi pour ca, je me suis proposé d'essayer et c'est bête de rater si près du but :
C++ et une fonction Bash
Code :
- #include <iostream>
- #include <string>
- #include <fstream>
- #include <sstream>
- using namespace std;
- void ecriture (long Cpt, long quota)
- {
- ifstream Quota1("/Library/Lab/Q.rtf", ios::in);
- ofstream QuotaC("/Library/Lab/Qc.rtf", ios::trunc);
- if (Quota1 && QuotaC)
- {
- cout << "Ouverture Réussie \n";
- string ligne;
- int i = 1;
- while (i>Cpt)
- {
- getline(Quota1, ligne);
- QuotaC << ligne;
- cout << ligne;
- i++;
- }
- QuotaC << quota;
- getline(Quota1, ligne);
- cout << "post cpt \n";
- while (getline(Quota1, ligne))
- {
- QuotaC << ligne;
- }
- system("cp /Library/Lab/Qc.rtf /Library/Lab/Q.rtf" );
- Quota1.close();
- QuotaC.close();
- }
- }
- int main (int argc, char * const argv[])
- {
- string Nom, Mdp, Ass, ligne;
- long Cpt=1, quota;
- cout << "Bonjour, entrez nom\n";
- cin >> Nom;
- cout <<"Entrez Mot de Passe\n";
- cin >> Mdp;
- ifstream fichnom("/Library/Lab/N.rtf" );
- if (fichnom)
- {
- long A = 0;
- while (getline(fichnom, ligne))
- {
- if (ligne == Nom) {A=1;}
- if (ligne != Nom && A==0) {Cpt++;}
- }
- fichnom.close();
- }
- else
- {
- cout << "Erreur Fichier Nom\n";
- return 0;
- }
- ifstream fichmdp ("/Library/Lab/M.rtf" );
- if (fichmdp)
- {
- long i=1;
- while (i != Cpt)
- {
- getline(fichmdp, ligne);
- i++;
- }
- getline(fichmdp, ligne);
- if (ligne != Mdp) { fichmdp.close(); cout << "Erreur Mot de Passe \n"; return 0;}
- fichmdp.close();
- }
- else
- {
- cout << "Erreur fichier Mdp \n"; return 0;
- }
- ifstream fichquota ("/Library/Lab/Q.rtf" );
- if (fichquota)
- {
- long j=1;
- while (j != Cpt)
- {
- getline(fichquota, ligne);
- j++;
- }
- getline(fichquota, ligne);
- istringstream input(ligne);
- input >> quota;
- if (quota == 0) { fichquota.close(); cout << "Plus d'impressions possibles \n"; return 0;}
- fichquota.close();
- }
- else
- {
- cout << "Erreur fichier quota \n"; return 0;
- }
- string Rep;
- cout << "Il vous reste " << quota << " impression(s) \n";
- cout << "Voulez vous une impression ? Y pour oui / N pour non \n";
- cin >> Rep;
- while (Rep == "Y" )
- {
- system("/usr/sbin/lpadmin -p -o job-quota-period=86400 \ -o job-page-limit=1" );
- quota--;
- ecriture(Cpt, quota);
- cout << "Il vous reste " << quota << "impression(s) \n";
- if (quota == 0) {cout << "Plus d'impressions possibles \n"; return 0;}
- cout << "Voulez vous une autre impression ? Y pour oui / N pour non \n";
- cin >> Rep;
- }
- return 0;
- }
|
J'ai posté dans cette section du fait du but (régulation sous UNIX) et de la fonction CUPS. Si un admin la juge mieux à sa place dans Progra / C++ je comprendrais Message édité par C501 le 04-11-2009 à 17:52:38 ---------------
Sleep is overrated...
|