Fixed style issues.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33558 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Michael Pfeiffer
2009-10-12 18:48:47 +00:00
parent fe017baf74
commit 3d9c7baae6
7 changed files with 274 additions and 251 deletions
+13 -10
View File
@@ -4,25 +4,28 @@
#include "LprTransport.h"
#include "DbgMsg.h"
LprTransport *transport = NULL;
extern "C" _EXPORT void exit_transport()
static LprTransport *gTransport = NULL;
extern "C" void
exit_transport()
{
DBGMSG(("> exit_transport\n"));
if (transport) {
delete transport;
transport = NULL;
}
delete gTransport;
gTransport = NULL;
DBGMSG(("< exit_transport\n"));
}
extern "C" _EXPORT BDataIO *init_transport(BMessage *msg)
extern "C" BDataIO *
init_transport(BMessage *msg)
{
DBGMSG(("> init_transport\n"));
transport = new LprTransport(msg);
gTransport = new LprTransport(msg);
if (transport->fail()) {
if (gTransport->fail()) {
exit_transport();
}
@@ -30,5 +33,5 @@ extern "C" _EXPORT BDataIO *init_transport(BMessage *msg)
msg->what = 'okok';
DBGMSG(("< init_transport\n"));
return transport;
return gTransport;
}
@@ -16,6 +16,7 @@
#include "LprDefs.h"
#include "DbgMsg.h"
#define DLG_WIDTH 370
#define DLG_HEIGHT 100
@@ -74,44 +75,51 @@ enum MSGS {
class LprSetupView : public BView {
public:
LprSetupView(BRect, BDirectory *);
~LprSetupView() {}
virtual void AttachedToWindow();
bool UpdateViewData();
LprSetupView(BRect, BDirectory *);
~LprSetupView() {}
virtual void AttachedToWindow();
bool UpdateViewData();
private:
BTextControl *server;
BTextControl *queue;
BDirectory *dir;
BTextControl* fServer;
BTextControl* fQueue;
BDirectory* fDir;
};
LprSetupView::LprSetupView(BRect frame, BDirectory *d)
: BView(frame, "", B_FOLLOW_ALL, B_WILL_DRAW), dir(d)
:
BView(frame, "", B_FOLLOW_ALL, B_WILL_DRAW), fDir(d)
{
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
}
void LprSetupView::AttachedToWindow()
void
LprSetupView::AttachedToWindow()
{
float width = max(StringWidth(SERVER_TEXT), StringWidth(QUEUE_TEXT)) + 10;
/* server name box */
// TODO remember previous value
server = new BTextControl(SERVER_RECT, "", SERVER_TEXT, "192.168.0.0", NULL);
AddChild(server);
server->SetDivider(width);
fServer = new BTextControl(SERVER_RECT, "", SERVER_TEXT, "192.168.0.0",
NULL);
AddChild(fServer);
fServer->SetDivider(width);
/* queue name box */
// TODO remember previous value
queue = new BTextControl(QUEUE_RECT, "", QUEUE_TEXT, "LPT1_PASSTHRU", NULL);
AddChild(queue);
queue->SetDivider(width);
fQueue = new BTextControl(QUEUE_RECT, "", QUEUE_TEXT, "LPT1_PASSTHRU",
NULL);
AddChild(fQueue);
fQueue->SetDivider(width);
/* cancel */
BButton *button = new BButton(CANCEL_RECT, "", CANCEL_TEXT, new BMessage(M_CANCEL));
BButton *button = new BButton(CANCEL_RECT, "", CANCEL_TEXT,
new BMessage(M_CANCEL));
AddChild(button);
/* ok */
@@ -121,12 +129,14 @@ void LprSetupView::AttachedToWindow()
button->MakeDefault(true);
}
bool LprSetupView::UpdateViewData()
bool
LprSetupView::UpdateViewData()
{
if (*server->Text() && *queue->Text()) {
if (*fServer->Text() && *fQueue->Text()) {
try {
LpsClient lpr(server->Text());
LpsClient lpr(fServer->Text());
lpr.connect();
}
@@ -136,8 +146,8 @@ bool LprSetupView::UpdateViewData()
return false;
}
dir->WriteAttr(LPR_SERVER_NAME, B_STRING_TYPE, 0, server->Text(), strlen(server->Text()) + 1);
dir->WriteAttr(LPR_QUEUE_NAME, B_STRING_TYPE, 0, queue->Text(), strlen(queue->Text()) + 1);
fDir->WriteAttr(LPR_SERVER_NAME, B_STRING_TYPE, 0, fServer->Text(), strlen(fServer->Text()) + 1);
fDir->WriteAttr(LPR_QUEUE_NAME, B_STRING_TYPE, 0, fQueue->Text(), strlen(fQueue->Text()) + 1);
return true;
}
@@ -146,60 +156,68 @@ bool LprSetupView::UpdateViewData()
return false;
}
LprSetupDlg::LprSetupDlg(BDirectory *dir)
: BWindow(BRect(100, 100, 100 + DLG_WIDTH, 100 + DLG_HEIGHT),
:
BWindow(BRect(100, 100, 100 + DLG_WIDTH, 100 + DLG_HEIGHT),
"LPR Setup", B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL,
B_NOT_RESIZABLE | B_NOT_MINIMIZABLE | B_NOT_ZOOMABLE)
{
result = 0;
fResult = 0;
Lock();
LprSetupView *view = new LprSetupView(Bounds(), dir);
AddChild(view);
Unlock();
semaphore = create_sem(0, "lprSetupSem");
fExitSemaphore = create_sem(0, "lprSetupSem");
}
bool LprSetupDlg::QuitRequested()
bool
LprSetupDlg::QuitRequested()
{
result = B_ERROR;
release_sem(semaphore);
fResult = B_ERROR;
release_sem(fExitSemaphore);
return true;
}
void LprSetupDlg::MessageReceived(BMessage *msg)
void
LprSetupDlg::MessageReceived(BMessage *msg)
{
bool success;
switch (msg->what) {
case M_OK:
Lock();
success = ((LprSetupView *)ChildAt(0))->UpdateViewData();
Unlock();
if (success) {
result = B_NO_ERROR;
release_sem(semaphore);
}
break;
case M_OK:
Lock();
success = ((LprSetupView *)ChildAt(0))->UpdateViewData();
Unlock();
if (success) {
fResult = B_NO_ERROR;
release_sem(fExitSemaphore);
}
break;
case M_CANCEL:
result = B_ERROR;
release_sem(semaphore);
break;
case M_CANCEL:
fResult = B_ERROR;
release_sem(fExitSemaphore);
break;
default:
BWindow::MessageReceived(msg);
break;
default:
BWindow::MessageReceived(msg);
break;
}
}
int LprSetupDlg::Go()
int
LprSetupDlg::Go()
{
Show();
acquire_sem(semaphore);
delete_sem(semaphore);
int value = result;
acquire_sem(fExitSemaphore);
delete_sem(fExitSemaphore);
int value = fResult;
Lock();
Quit();
return value;
+24 -24
View File
@@ -1,24 +1,24 @@
// Sun, 18 Jun 2000
// Y.Takagi
#ifndef __LprSetupDlg_H
#define __LprSetupDlg_H
#include <Window.h>
class BDirectory;
class LprSetupDlg : public BWindow {
public:
LprSetupDlg(BDirectory *);
~LprSetupDlg() {}
virtual bool QuitRequested();
virtual void MessageReceived(BMessage *message);
int Go();
private:
int result;
long semaphore;
};
#endif // __LprSetupDlg_H
// Sun, 18 Jun 2000
// Y.Takagi
#ifndef __LprSetupDlg_H
#define __LprSetupDlg_H
#include <Window.h>
class BDirectory;
class LprSetupDlg : public BWindow {
public:
LprSetupDlg(BDirectory *);
~LprSetupDlg() {}
virtual bool QuitRequested();
virtual void MessageReceived(BMessage *message);
int Go();
private:
int fResult;
sem_id fExitSemaphore;
};
#endif // __LprSetupDlg_H
@@ -20,27 +20,23 @@
#include "LprDefs.h"
#include "DbgMsg.h"
#if (!__MWERKS__)
using namespace std;
#else
#define std
#endif
LprTransport::LprTransport(BMessage *msg)
: BDataIO()
:
BDataIO()
{
__server[0] = '\0';
__queue[0] = '\0';
__file[0] = '\0';
__user[0] = '\0';
__jobid = 0;
__error = false;
fServer[0] = '\0';
fQueue[0] = '\0';
fFile[0] = '\0';
fUser[0] = '\0';
fJobId = 0;
fError = false;
struct passwd *pwd = getpwuid(geteuid());
if (pwd != NULL && pwd->pw_name != NULL && pwd->pw_name[0])
strcpy(__user, pwd->pw_name);
strcpy(fUser, pwd->pw_name);
else
strcpy(__user, "baron");
strcpy(fUser, "baron");
DUMP_BMESSAGE(msg);
@@ -49,68 +45,69 @@ LprTransport::LprTransport(BMessage *msg)
BDirectory dir(spool_path);
DUMP_BDIRECTORY(&dir);
dir.ReadAttr(LPR_SERVER_NAME, B_STRING_TYPE, 0, __server, sizeof(__server));
if (__server[0] == '\0') {
dir.ReadAttr(LPR_SERVER_NAME, B_STRING_TYPE, 0, fServer, sizeof(fServer));
if (fServer[0] == '\0') {
LprSetupDlg *dlg = new LprSetupDlg(&dir);
if (dlg->Go() == B_ERROR) {
__error = true;
fError = true;
return;
}
}
dir.ReadAttr(LPR_SERVER_NAME, B_STRING_TYPE, 0, __server, sizeof(__server));
dir.ReadAttr(LPR_QUEUE_NAME, B_STRING_TYPE, 0, __queue, sizeof(__queue));
dir.ReadAttr(LPR_JOB_ID, B_INT32_TYPE, 0, &__jobid, sizeof(__jobid));
__jobid++;
if (__jobid > 255) {
__jobid = 1;
dir.ReadAttr(LPR_SERVER_NAME, B_STRING_TYPE, 0, fServer, sizeof(fServer));
dir.ReadAttr(LPR_QUEUE_NAME, B_STRING_TYPE, 0, fQueue, sizeof(fQueue));
dir.ReadAttr(LPR_JOB_ID, B_INT32_TYPE, 0, &fJobId, sizeof(fJobId));
fJobId++;
if (fJobId > 255) {
fJobId = 1;
}
dir.WriteAttr(LPR_JOB_ID, B_INT32_TYPE, 0, &__jobid, sizeof(__jobid));
dir.WriteAttr(LPR_JOB_ID, B_INT32_TYPE, 0, &fJobId, sizeof(fJobId));
sprintf(__file, "%s/%s@ipp.%ld", spool_path, __user, __jobid);
sprintf(fFile, "%s/%s@ipp.%ld", spool_path, fUser, fJobId);
__fs.open(__file, ios::in | ios::out | ios::binary | ios::trunc);
if (__fs.good()) {
DBGMSG(("spool_file: %s\n", __file));
fStream.open(fFile, ios::in | ios::out | ios::binary | ios::trunc);
if (fStream.good()) {
DBGMSG(("spool_file: %s\n", fFile));
return;
}
}
__error = true;
fError = true;
}
LprTransport::~LprTransport()
{
char hostname[128];
gethostname(hostname, sizeof(hostname));
ostringstream cfname;
cfname << "cfA" << setw(3) << setfill('0') << __jobid << hostname;
cfname << "cfA" << setw(3) << setfill('0') << fJobId << hostname;
ostringstream dfname;
dfname << "dfA" << setw(3) << setfill('0') << __jobid << hostname;
dfname << "dfA" << setw(3) << setfill('0') << fJobId << hostname;
ostringstream cf;
cf << 'H' << hostname << '\n';
cf << 'P' << __user << '\n';
cf << 'P' << fUser << '\n';
cf << 'l' << dfname.str() << '\n';
cf << 'U' << dfname.str() << '\n';
long cfsize = cf.str().length();
long dfsize = __fs.tellg();
__fs.seekg(0, ios::beg);
long dfsize = fStream.tellg();
fStream.seekg(0, ios::beg);
try {
LpsClient lpr(__server);
LpsClient lpr(fServer);
lpr.connect();
lpr.receiveJob(__queue);
lpr.receiveJob(fQueue);
lpr.receiveControlFile(cfsize, cfname.str().c_str());
lpr.transferData(cf.str().c_str(), cfsize);
lpr.endTransfer();
lpr.receiveDataFile(dfsize, dfname.str().c_str());
lpr.transferData(__fs, dfsize);
lpr.transferData(fStream, dfsize);
lpr.endTransfer();
}
@@ -120,21 +117,23 @@ LprTransport::~LprTransport()
alert->Go();
}
unlink(__file);
unlink(fFile);
}
ssize_t LprTransport::Read(void *, size_t)
ssize_t
LprTransport::Read(void *, size_t)
{
return 0;
}
ssize_t LprTransport::Write(const void *buffer, size_t size)
ssize_t
LprTransport::Write(const void *buffer, size_t size)
{
// DBGMSG(("write: %d\n", size));
if (!__fs.write((char *)buffer, size)) {
__error = true;
if (!fStream.write((char *)buffer, size)) {
fError = true;
return 0;
}
// return __fs.pcount();
return size;
}
+19 -20
View File
@@ -9,38 +9,37 @@
#include <fstream>
#include <string>
#if (!__MWERKS__)
using namespace std;
#else
#define std
#endif
class LprTransport : public BDataIO {
public:
LprTransport(BMessage *msg);
virtual ~LprTransport();
virtual ssize_t Read(void *buffer, size_t size);
LprTransport(BMessage *msg);
virtual ~LprTransport();
virtual ssize_t Read(void *buffer, size_t size);
virtual ssize_t Write(const void *buffer, size_t size);
bool operator !() const;
bool fail() const;
bool operator!() const;
bool fail() const;
private:
char __server[256];
char __queue[256];
char __file[256];
char __user[256];
int32 __jobid;
fstream __fs;
bool __error;
char fServer[256];
char fQueue[256];
char fFile[256];
char fUser[256];
int32 fJobId;
fstream fStream;
bool fError;
};
inline bool LprTransport::fail() const
inline bool
LprTransport::fail() const
{
return __error;
return fError;
}
inline bool LprTransport::operator !() const
inline bool
LprTransport::operator!() const
{
return fail();
}
+72 -78
View File
@@ -1,13 +1,8 @@
// Sun, 18 Jun 2000
// Y.Takagi
#if defined(__HAIKU__) || defined(HAIKU_TARGET_PLATFORM_BONE)
# include <sys/socket.h>
# include <netdb.h>
#else
# include <net/socket.h>
# include <net/netdb.h>
#endif
#include <sys/socket.h>
#include <netdb.h>
#include <errno.h>
#include <string.h>
@@ -16,13 +11,7 @@
#include <algorithm>
#include "LpsClient.h"
#include "Socket.h"
//#include "DbgMsg.h"
#if (!__MWERKS__)
using namespace std;
#else
#define std
#endif
#define LPS_SERVER_PORT 515
#define LPS_CLIENT_PORT_S 721
@@ -50,110 +39,115 @@ using namespace std;
LpsClient::LpsClient(const char *host)
: connected(false), __host(host), __sock(NULL)
:
fConnected(false),
fHost(host),
fSock(NULL)
{
}
LpsClient::~LpsClient()
{
close();
}
void LpsClient::connect() throw(LPSException)
{
// DBGMSG(("connect\n"));
for (int localPort = LPS_CLIENT_PORT_S ; localPort <= LPS_CLIENT_PORT_E ; localPort++) {
if (__sock) {
delete __sock;
void
LpsClient::connect() throw(LPSException)
{
for (int localPort = LPS_CLIENT_PORT_S; localPort <= LPS_CLIENT_PORT_E;
localPort++) {
if (fSock) {
delete fSock;
}
__sock = new Socket(__host.c_str(), LPS_SERVER_PORT, localPort);
if (__sock->good()) {
__is = &__sock->getInputStream();
__os = &__sock->getOutputStream();
connected = true;
fSock = new Socket(fHost.c_str(), LPS_SERVER_PORT, localPort);
if (fSock->good()) {
fInput = &fSock->getInputStream();
fOutput = &fSock->getOutputStream();
fConnected = true;
return;
}
}
throw(LPSException(__sock->getLastError()));
throw(LPSException(fSock->getLastError()));
}
void LpsClient::close()
{
// DBGMSG(("close\n"));
connected = false;
if (__sock) {
delete __sock;
__sock = NULL;
void
LpsClient::close()
{
fConnected = false;
if (fSock) {
delete fSock;
fSock = NULL;
}
}
void LpsClient::receiveJob(const char *printer) throw(LPSException)
{
// DBGMSG(("tell_receive_job\n"));
if (connected) {
*__os << LPS_PRINT_JOB << printer << '\n' << flush;
void
LpsClient::receiveJob(const char *printer) throw(LPSException)
{
if (fConnected) {
*fOutput << LPS_PRINT_JOB << printer << '\n' << flush;
checkAck();
}
}
void LpsClient::receiveControlFile(int size, const char *name) throw(LPSException)
{
// DBGMSG(("tell_receive_control_file\n"));
if (connected) {
void
LpsClient::receiveControlFile(int size, const char *name) throw(LPSException)
{
if (fConnected) {
char cfname[32];
strncpy(cfname, name, sizeof(cfname));
cfname[sizeof(cfname) - 1] = '\0';
*__os << LPS_RECEIVE_CONTROL_FILE << size << ' ' << cfname << '\n' << flush;
*fOutput << LPS_RECEIVE_CONTROL_FILE << size << ' ' << cfname << '\n' << flush;
checkAck();
}
}
void LpsClient::receiveDataFile(int size, const char *name) throw(LPSException)
void
LpsClient::receiveDataFile(int size, const char *name) throw(LPSException)
{
// DBGMSG(("tell_receive_data_file\n"));
if (connected) {
if (fConnected) {
char dfname[32];
strncpy(dfname, name, sizeof(dfname));
dfname[sizeof(dfname) - 1] = '\0';
*__os << LPS_RECEIVE_DATA_FILE << size << ' ' << dfname << '\n' << flush;
*fOutput << LPS_RECEIVE_DATA_FILE << size << ' ' << dfname << '\n' << flush;
checkAck();
}
}
void LpsClient::transferData(const char *buffer, int size) throw(LPSException)
{
// DBGMSG(("send: %d\n", size));
if (connected) {
void
LpsClient::transferData(const char *buffer, int size) throw(LPSException)
{
if (fConnected) {
if (size < 0) {
size = strlen(buffer);
}
if (!__os->write(buffer, size)) {
if (!fOutput->write(buffer, size)) {
close();
throw(LPSException("error talking to lpd server"));
}
}
}
void LpsClient::transferData(istream &is, int size) throw(LPSException)
{
// DBGMSG(("send: %d\n", size));
if (connected) {
void
LpsClient::transferData(istream &is, int size) throw(LPSException)
{
if (fConnected) {
if (size < 0) {
is.seekg(0, ios::end);
@@ -163,7 +157,7 @@ void LpsClient::transferData(istream &is, int size) throw(LPSException)
char c;
while (is.get(c)) {
if (!__os->put(c)) {
if (!fOutput->put(c)) {
close();
throw(LPSException("error reading file."));
return;
@@ -172,41 +166,41 @@ void LpsClient::transferData(istream &is, int size) throw(LPSException)
}
}
void LpsClient::endTransfer() throw(LPSException)
{
// DBGMSG(("tell_end_transfer\n"));
if (connected) {
*__os << LPS_END_TRANSFER << flush;
void
LpsClient::endTransfer() throw(LPSException)
{
if (fConnected) {
*fOutput << LPS_END_TRANSFER << flush;
checkAck();
}
}
void LpsClient::checkAck() throw(LPSException)
{
// DBGMSG(("check_ack\n"));
if (connected) {
void
LpsClient::checkAck() throw(LPSException)
{
if (fConnected) {
char c;
if (!__is->get(c)) {
if (!fInput->get(c)) {
close();
throw(LPSException("server not responding."));
return;
}
switch (c) {
case LPS_OK:
break;
case LPS_ERROR:
close();
throw(LPSException("server error."));
break;
case LPS_NO_SPOOL_SPACE:
close();
throw(LPSException("not enough spool space on server."));
break;
case LPS_OK:
break;
case LPS_ERROR:
close();
throw(LPSException("server error."));
break;
case LPS_NO_SPOOL_SPACE:
close();
throw(LPSException("not enough spool space on server."));
break;
}
}
}
+37 -27
View File
@@ -7,44 +7,54 @@
#include <iostream>
#include <string>
#if (!__MWERKS__)
using namespace std;
#else
#define std
#endif
class Socket;
class LPSException {
private:
string str;
public:
LPSException(const string &what_arg) : str(what_arg) {}
const char *what() const { return str.c_str(); }
LPSException(const string& what)
:
fWhat(what)
{
}
const char * what() const
{
return fWhat.c_str();
}
private:
string fWhat;
};
class LpsClient {
public:
LpsClient(const char *host);
~LpsClient();
void connect() throw(LPSException);
void close();
void receiveJob(const char *queue) throw(LPSException);
void receiveControlFile(int cfsize, const char *cfname) throw(LPSException);
void receiveDataFile(int dfsize, const char *dfname) throw(LPSException);
void transferData(const char *buffer, int size = -1) throw(LPSException);
void transferData(istream &is, int size = -1) throw(LPSException);
void endTransfer() throw(LPSException);
void checkAck() throw(LPSException);
protected:
bool connected;
LpsClient(const char* host);
~LpsClient();
void connect() throw(LPSException);
void close();
void receiveJob(const char* queue) throw(LPSException);
void receiveControlFile(int cfsize, const char* cfname)
throw(LPSException);
void receiveDataFile(int dfsize, const char* dfname)
throw(LPSException);
void transferData(const char* buffer, int size = -1)
throw(LPSException);
void transferData(istream& is, int size = -1)
throw(LPSException);
void endTransfer() throw(LPSException);
void checkAck() throw(LPSException);
private:
string __host;
Socket *__sock;
istream *__is;
ostream *__os;
bool fConnected;
string fHost;
Socket* fSock;
istream* fInput;
ostream* fOutput;
};
#endif /* __LPSCLIENT_H */