parent
2c6c71334b
commit
0e11c4ce6d
@ -1,3 +1,3 @@
|
|||||||
SUBDIRS = widgets app part
|
SUBDIRS = lib widgets app part
|
||||||
INCLUDES = $(all_includes)
|
INCLUDES = $(all_includes)
|
||||||
METASOURCES = AUTO
|
METASOURCES = AUTO
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
INCLUDES = $(all_includes) -I/usr/include/sasl
|
||||||
|
METASOURCES = AUTO
|
||||||
|
noinst_LTLIBRARIES = libtdekrbsocket.la
|
||||||
|
libtdekrbsocket_la_SOURCES = tdekrbsocket.cpp
|
||||||
|
libtdekrbsocket_la_LDFLAGS = -lsasl2
|
@ -0,0 +1,404 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (C) 2012 by Timothy Pearson *
|
||||||
|
* kb9vqf@pearsoncomputing.net *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program; if not, write to the *
|
||||||
|
* Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include <tqapplication.h>
|
||||||
|
|
||||||
|
#include <sasl.h>
|
||||||
|
#include <saslplug.h>
|
||||||
|
#include <saslutil.h>
|
||||||
|
|
||||||
|
#include "tdekrbsocket.h"
|
||||||
|
|
||||||
|
#define NET_SEC_BUF_SIZE (2048)
|
||||||
|
|
||||||
|
class SASLDataPrivate
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
sasl_callback_t m_callbacks[N_CALLBACKS];
|
||||||
|
sasl_conn_t *m_krbConnection;
|
||||||
|
};
|
||||||
|
|
||||||
|
static int logSASLMessages(void *context __attribute__((unused)), int priority, const char *message) {
|
||||||
|
const char *label;
|
||||||
|
|
||||||
|
if (!message) {
|
||||||
|
return SASL_BADPARAM;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (priority) {
|
||||||
|
case SASL_LOG_ERR:
|
||||||
|
label = "Error";
|
||||||
|
break;
|
||||||
|
case SASL_LOG_NOTE:
|
||||||
|
label = "Info";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
label = "Other";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("[SASL %s] %s\n\r", label, message);
|
||||||
|
|
||||||
|
return SASL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
TDEKerberosClientSocket::TDEKerberosClientSocket(TQObject *parent, const char *name) : TQSocket(parent, name), m_kerberosRequested(false) {
|
||||||
|
saslData = new SASLDataPrivate;
|
||||||
|
saslData->m_krbConnection = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
TDEKerberosClientSocket::~TDEKerberosClientSocket() {
|
||||||
|
delete saslData;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDEKerberosClientSocket::open(int mode) {
|
||||||
|
bool ret = TQSocket::open(mode);
|
||||||
|
if (m_kerberosRequested) {
|
||||||
|
initializeKerberosInterface();
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEKerberosClientSocket::close() {
|
||||||
|
TQSocket::close();
|
||||||
|
}
|
||||||
|
|
||||||
|
int TDEKerberosClientSocket::setUsingKerberos(bool krbactive) {
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
if (m_serviceName == "") {
|
||||||
|
printf("[ERROR] No service name set!\n\r"); fflush(stdout);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (krbactive) {
|
||||||
|
m_kerberosRequested = true;
|
||||||
|
if ((!saslData->m_krbConnection) && (state() == TQSocket::Connected)) {
|
||||||
|
ret = initializeKerberosInterface();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m_kerberosRequested = false;
|
||||||
|
if (saslData->m_krbConnection) {
|
||||||
|
freeKerberosConnection();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEKerberosClientSocket::setServiceName(TQString name) {
|
||||||
|
m_serviceName = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEKerberosClientSocket::setServerFQDN(TQString name) {
|
||||||
|
m_serverFQDN = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_LONG TDEKerberosClientSocket::readBlock(char *data, Q_ULONG maxlen) {
|
||||||
|
Q_LONG ret = TQSocket::readBlock(data, maxlen);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_LONG TDEKerberosClientSocket::writeBlock(const char *data, Q_ULONG len) {
|
||||||
|
Q_LONG ret = TQSocket::writeBlock(data, len);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_LONG TDEKerberosClientSocket::readLine(char *data, Q_ULONG maxlen) {
|
||||||
|
Q_LONG ret;
|
||||||
|
|
||||||
|
if (m_kerberosRequested) {
|
||||||
|
ret = getSASLDataFromNetwork(data, maxlen);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ret = TQSocket::readLine(data, maxlen);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
TQString TDEKerberosClientSocket::readLine() {
|
||||||
|
TQString ret;
|
||||||
|
char buf[NET_SEC_BUF_SIZE];
|
||||||
|
|
||||||
|
if (m_kerberosRequested) {
|
||||||
|
receiveEncryptedData(buf, NET_SEC_BUF_SIZE);
|
||||||
|
ret = TQString(buf);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ret = TQSocket::readLine();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEKerberosClientSocket::writeLine(TQString str) {
|
||||||
|
if (m_kerberosRequested) {
|
||||||
|
transmitEncryptedData(socket(), str.ascii(), str.length());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
TQSocket::writeBlock(str.ascii(), str.length());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEKerberosClientSocket::freeKerberosConnection(void) {
|
||||||
|
if (saslData->m_krbConnection) {
|
||||||
|
sasl_dispose(&saslData->m_krbConnection);
|
||||||
|
}
|
||||||
|
saslData->m_krbConnection = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEKerberosClientSocket::sendSASLDataToNetwork(const char *buffer, unsigned length, int netfd) {
|
||||||
|
char *buf;
|
||||||
|
unsigned len, alloclen;
|
||||||
|
int result;
|
||||||
|
char txbuf[NET_SEC_BUF_SIZE];
|
||||||
|
|
||||||
|
alloclen = ((length / 3) + 1) * 4 + 1;
|
||||||
|
buf = (char*)malloc(alloclen);
|
||||||
|
if (!buf) {
|
||||||
|
printf("[ERROR] Unable to malloc()!\n\r");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = sasl_encode64(buffer, length, buf, alloclen, &len);
|
||||||
|
if (result != SASL_OK) {
|
||||||
|
printf("[ERROR] Encoding data in base64 returned %s (%d)\n\r", sasl_errstring(result, NULL, NULL), result);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf(txbuf, "%s\n", buf);
|
||||||
|
write(netfd, txbuf, strlen(txbuf));
|
||||||
|
|
||||||
|
free(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int TDEKerberosClientSocket::getSASLDataFromNetwork(char *buf, int trunclen) {
|
||||||
|
unsigned int len;
|
||||||
|
int result;
|
||||||
|
|
||||||
|
len = 0;
|
||||||
|
while (1) {
|
||||||
|
tqApp->processEvents();
|
||||||
|
if (state() != TQSocket::Connected) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (TQSocket::readBlock(buf+len, 1) > 0) {
|
||||||
|
if (buf[len] == '\n') {
|
||||||
|
buf[len] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (buf[len] != '\r') {
|
||||||
|
len++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (len >= trunclen) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
len = strlen(buf);
|
||||||
|
result = sasl_decode64(buf, (unsigned) strlen(buf), buf, trunclen, &len);
|
||||||
|
if (result != SASL_OK) {
|
||||||
|
printf("[ERROR] Decoding data from base64 returned %s (%d)\n\r", sasl_errstring(result, NULL, NULL), result);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
buf[len] = '\0';
|
||||||
|
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TDEKerberosClientSocket::transmitEncryptedData(int fd, const char* readbuf, int cc) {
|
||||||
|
int result = 0;
|
||||||
|
unsigned int len;
|
||||||
|
const char *data;
|
||||||
|
|
||||||
|
result=sasl_encode(saslData->m_krbConnection, readbuf, cc, &data, &len);
|
||||||
|
if (result != SASL_OK) {
|
||||||
|
printf("[ERROR] Encrypting data returned %s (%d)\n\r", sasl_errdetail(saslData->m_krbConnection), result);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
sendSASLDataToNetwork(data, len, fd);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TDEKerberosClientSocket::receiveEncryptedData(char *buf, int trunclen) {
|
||||||
|
unsigned int recv_len;
|
||||||
|
const char *recv_data;
|
||||||
|
int result;
|
||||||
|
int len;
|
||||||
|
|
||||||
|
len = getSASLDataFromNetwork(buf, trunclen);
|
||||||
|
if (len >= 0) {
|
||||||
|
result=sasl_decode(saslData->m_krbConnection, buf, len, &recv_data, &recv_len);
|
||||||
|
if (result != SASL_OK) {
|
||||||
|
printf("[ERROR] Decrypting data returned %s (%d)\n\r", sasl_errdetail(saslData->m_krbConnection), result);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
strncpy(buf, recv_data, trunclen);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TDEKerberosClientSocket::initializeKerberosInterface() {
|
||||||
|
if (state() != TQSocket::Connected) {
|
||||||
|
saslData->m_krbConnection = false;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
sasl_callback_t *callback;
|
||||||
|
char buf[NET_SEC_BUF_SIZE];
|
||||||
|
int result = 0;
|
||||||
|
int serverlast = 0;
|
||||||
|
sasl_security_properties_t secprops;
|
||||||
|
const char *chosenmech;
|
||||||
|
unsigned int len;
|
||||||
|
const char *data;
|
||||||
|
char user_authorized = 0;
|
||||||
|
sasl_ssf_t *ssf;
|
||||||
|
char *iplocal = NULL;
|
||||||
|
char *ipremote = NULL;
|
||||||
|
const char *service = m_serviceName.ascii();
|
||||||
|
const char *fqdn = m_serverFQDN.ascii();
|
||||||
|
|
||||||
|
callback = saslData->m_callbacks;
|
||||||
|
|
||||||
|
// log
|
||||||
|
callback->id = SASL_CB_LOG;
|
||||||
|
callback->proc = (sasl_callback_ft)&logSASLMessages;
|
||||||
|
callback->context = NULL;
|
||||||
|
++callback;
|
||||||
|
|
||||||
|
// end of callback list
|
||||||
|
callback->id = SASL_CB_LIST_END;
|
||||||
|
callback->proc = NULL;
|
||||||
|
callback->context = NULL;
|
||||||
|
++callback;
|
||||||
|
|
||||||
|
// Initialize default data structures
|
||||||
|
memset(&secprops, 0L, sizeof(secprops));
|
||||||
|
secprops.maxbufsize = NET_SEC_BUF_SIZE;
|
||||||
|
secprops.max_ssf = UINT_MAX;
|
||||||
|
|
||||||
|
result = sasl_client_init(saslData->m_callbacks);
|
||||||
|
if (result != SASL_OK) {
|
||||||
|
printf("[ERROR] Initializing libsasl returned %s (%d)\n\r", sasl_errstring(result, NULL, NULL), result);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = sasl_client_new(service, fqdn, iplocal, ipremote, NULL, serverlast, &saslData->m_krbConnection);
|
||||||
|
if (result != SASL_OK) {
|
||||||
|
printf("[ERROR] Allocating sasl connection state returned %s (%d)\n\r", sasl_errstring(result, NULL, NULL), result);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = sasl_setprop(saslData->m_krbConnection, SASL_SEC_PROPS, &secprops);
|
||||||
|
if (result != SASL_OK) {
|
||||||
|
printf("[ERROR] Setting security properties returned %s (%d)\n\r", sasl_errstring(result, NULL, NULL), result);
|
||||||
|
freeKerberosConnection();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("[DEBUG] Waiting for mechanism list from server...\n\r");
|
||||||
|
len = getSASLDataFromNetwork(buf, NET_SEC_BUF_SIZE);
|
||||||
|
|
||||||
|
printf("Choosing best mechanism from: %s\n", buf);
|
||||||
|
|
||||||
|
result = sasl_client_start(saslData->m_krbConnection, buf, NULL, &data, &len, &chosenmech);
|
||||||
|
if (result != SASL_OK && result != SASL_CONTINUE) {
|
||||||
|
printf("[ERROR] Starting SASL negotiation returned %s (%d)\n\r", sasl_errstring(result, NULL, NULL), result);
|
||||||
|
freeKerberosConnection();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("[DEBUG] Using mechanism %s\n\r", chosenmech);
|
||||||
|
strcpy(buf, chosenmech);
|
||||||
|
if (data) {
|
||||||
|
if (NET_SEC_BUF_SIZE - strlen(buf) - 1 < len) {
|
||||||
|
printf("[ERROR] Insufficient buffer space to construct initial response!\n\r");
|
||||||
|
freeKerberosConnection();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
printf("[DEBUG] Preparing initial response...\n\r");
|
||||||
|
memcpy(buf + strlen(buf) + 1, data, len);
|
||||||
|
len += (unsigned) strlen(buf) + 1;
|
||||||
|
data = NULL;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
len = (unsigned) strlen(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("[DEBUG] Sending initial response...\n\r");
|
||||||
|
sendSASLDataToNetwork(buf, len, socket());
|
||||||
|
|
||||||
|
while (result == SASL_CONTINUE) {
|
||||||
|
printf("[DEBUG] Waiting for server reply...\n\r");
|
||||||
|
len = getSASLDataFromNetwork(buf, NET_SEC_BUF_SIZE);
|
||||||
|
if (state() != TQSocket::Connected) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
result = sasl_client_step(saslData->m_krbConnection, buf, len, NULL, &data, &len);
|
||||||
|
if (result != SASL_OK && result != SASL_CONTINUE) {
|
||||||
|
printf("[ERROR] Performing SASL negotiation returned %s (%d)\n\r", sasl_errstring(result, NULL, NULL), result);
|
||||||
|
freeKerberosConnection();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (data && len) {
|
||||||
|
printf("[DEBUG] Sending response...\n\r");
|
||||||
|
sendSASLDataToNetwork(data, len, socket());
|
||||||
|
}
|
||||||
|
else if (result != SASL_OK || !serverlast) {
|
||||||
|
sendSASLDataToNetwork("", 0, socket());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("[DEBUG] Negotiation complete!\n\r");
|
||||||
|
|
||||||
|
result = sasl_getprop(saslData->m_krbConnection, SASL_USERNAME, (const void **)&data);
|
||||||
|
if (result != SASL_OK) {
|
||||||
|
printf("[WARNING] Unable to determine authenticated username!\n\r");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf("[DEBUG] Authenticated username: %s\n\r", data ? data : "(NULL)");
|
||||||
|
}
|
||||||
|
|
||||||
|
result = sasl_getprop(saslData->m_krbConnection, SASL_DEFUSERREALM, (const void **)&data);
|
||||||
|
if (result != SASL_OK) {
|
||||||
|
printf("[WARNING] Unable to determine authenticated realm!\n\r");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf("[DEBUG] Authenticated realm: %s\n\r", data ? data : "(NULL)");
|
||||||
|
}
|
||||||
|
|
||||||
|
result = sasl_getprop(saslData->m_krbConnection, SASL_SSF, (const void **)&ssf);
|
||||||
|
if (result != SASL_OK) {
|
||||||
|
printf("[WARNING] Unable to determine SSF!\n\r");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf("[DEBUG] Authenticated SSF: %d\n", *ssf);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
@ -0,0 +1,67 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (C) 2012 by Timothy Pearson *
|
||||||
|
* kb9vqf@pearsoncomputing.net *
|
||||||
|
* *
|
||||||
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
|
* it under the terms of the GNU General Public License as published by *
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or *
|
||||||
|
* (at your option) any later version. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program; if not, write to the *
|
||||||
|
* Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef TDEKRBSOCKET_H
|
||||||
|
#define TDEKRBSOCKET_H
|
||||||
|
|
||||||
|
#include <tqsocket.h>
|
||||||
|
|
||||||
|
#define N_CALLBACKS 3
|
||||||
|
|
||||||
|
class SASLDataPrivate;
|
||||||
|
|
||||||
|
class TDEKerberosClientSocket : public TQSocket
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
TDEKerberosClientSocket(TQObject *parent=0, const char *name=0);
|
||||||
|
virtual ~TDEKerberosClientSocket();
|
||||||
|
|
||||||
|
bool open(int mode);
|
||||||
|
void close();
|
||||||
|
Q_LONG readBlock(char *data, Q_ULONG maxlen);
|
||||||
|
Q_LONG writeBlock(const char *data, Q_ULONG len);
|
||||||
|
Q_LONG readLine(char *data, Q_ULONG maxlen);
|
||||||
|
TQString readLine();
|
||||||
|
void writeLine(TQString);
|
||||||
|
|
||||||
|
int setUsingKerberos(bool krbactive);
|
||||||
|
void setServiceName(TQString name);
|
||||||
|
void setServerFQDN(TQString name);
|
||||||
|
|
||||||
|
private:
|
||||||
|
int initializeKerberosInterface();
|
||||||
|
void freeKerberosConnection();
|
||||||
|
void sendSASLDataToNetwork(const char *buffer, unsigned length, int netfd);
|
||||||
|
unsigned int getSASLDataFromNetwork(char *buf, int trunclen);
|
||||||
|
int transmitEncryptedData(int fd, const char* readbuf, int cc);
|
||||||
|
int receiveEncryptedData(char *buf, int trunclen);
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_kerberosRequested;
|
||||||
|
TQString m_serviceName;
|
||||||
|
TQString m_serverFQDN;
|
||||||
|
|
||||||
|
private:
|
||||||
|
SASLDataPrivate *saslData;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // TDEKRBSOCKET_H
|
@ -1 +0,0 @@
|
|||||||
Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
|
@ -1,316 +0,0 @@
|
|||||||
# Doxyfile 1.5.6-KDevelop
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Project related configuration options
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
DOXYFILE_ENCODING = UTF-8
|
|
||||||
PROJECT_NAME = auth_server_lin
|
|
||||||
PROJECT_NUMBER = 0.1
|
|
||||||
OUTPUT_DIRECTORY =
|
|
||||||
CREATE_SUBDIRS = NO
|
|
||||||
OUTPUT_LANGUAGE = English
|
|
||||||
BRIEF_MEMBER_DESC = YES
|
|
||||||
REPEAT_BRIEF = YES
|
|
||||||
ABBREVIATE_BRIEF = "The $name class" \
|
|
||||||
"The $name widget" \
|
|
||||||
"The $name file" \
|
|
||||||
is \
|
|
||||||
provides \
|
|
||||||
specifies \
|
|
||||||
contains \
|
|
||||||
represents \
|
|
||||||
a \
|
|
||||||
an \
|
|
||||||
the
|
|
||||||
ALWAYS_DETAILED_SEC = NO
|
|
||||||
INLINE_INHERITED_MEMB = NO
|
|
||||||
FULL_PATH_NAMES = YES
|
|
||||||
STRIP_FROM_PATH = /home/
|
|
||||||
STRIP_FROM_INC_PATH =
|
|
||||||
SHORT_NAMES = NO
|
|
||||||
JAVADOC_AUTOBRIEF = NO
|
|
||||||
QT_AUTOBRIEF = NO
|
|
||||||
MULTILINE_CPP_IS_BRIEF = NO
|
|
||||||
DETAILS_AT_TOP = NO
|
|
||||||
INHERIT_DOCS = YES
|
|
||||||
SEPARATE_MEMBER_PAGES = NO
|
|
||||||
TAB_SIZE = 8
|
|
||||||
ALIASES =
|
|
||||||
OPTIMIZE_OUTPUT_FOR_C = NO
|
|
||||||
OPTIMIZE_OUTPUT_JAVA = NO
|
|
||||||
OPTIMIZE_FOR_FORTRAN = NO
|
|
||||||
OPTIMIZE_OUTPUT_VHDL = NO
|
|
||||||
BUILTIN_STL_SUPPORT = NO
|
|
||||||
CPP_CLI_SUPPORT = NO
|
|
||||||
SIP_SUPPORT = NO
|
|
||||||
IDL_PROPERTY_SUPPORT = YES
|
|
||||||
DISTRIBUTE_GROUP_DOC = NO
|
|
||||||
SUBGROUPING = YES
|
|
||||||
TYPEDEF_HIDES_STRUCT = NO
|
|
||||||
SYMBOL_CACHE_SIZE = 0
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Build related configuration options
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
EXTRACT_ALL = NO
|
|
||||||
EXTRACT_PRIVATE = NO
|
|
||||||
EXTRACT_STATIC = NO
|
|
||||||
EXTRACT_LOCAL_CLASSES = YES
|
|
||||||
EXTRACT_LOCAL_METHODS = NO
|
|
||||||
EXTRACT_ANON_NSPACES = NO
|
|
||||||
HIDE_UNDOC_MEMBERS = NO
|
|
||||||
HIDE_UNDOC_CLASSES = NO
|
|
||||||
HIDE_FRIEND_COMPOUNDS = NO
|
|
||||||
HIDE_IN_BODY_DOCS = NO
|
|
||||||
INTERNAL_DOCS = NO
|
|
||||||
CASE_SENSE_NAMES = YES
|
|
||||||
HIDE_SCOPE_NAMES = NO
|
|
||||||
SHOW_INCLUDE_FILES = YES
|
|
||||||
INLINE_INFO = YES
|
|
||||||
SORT_MEMBER_DOCS = YES
|
|
||||||
SORT_BRIEF_DOCS = NO
|
|
||||||
SORT_GROUP_NAMES = NO
|
|
||||||
SORT_BY_SCOPE_NAME = NO
|
|
||||||
GENERATE_TODOLIST = YES
|
|
||||||
GENERATE_TESTLIST = YES
|
|
||||||
GENERATE_BUGLIST = YES
|
|
||||||
GENERATE_DEPRECATEDLIST= YES
|
|
||||||
ENABLED_SECTIONS =
|
|
||||||
MAX_INITIALIZER_LINES = 30
|
|
||||||
SHOW_USED_FILES = YES
|
|
||||||
SHOW_DIRECTORIES = NO
|
|
||||||
SHOW_FILES = YES
|
|
||||||
SHOW_NAMESPACES = YES
|
|
||||||
FILE_VERSION_FILTER =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to warning and progress messages
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
QUIET = NO
|
|
||||||
WARNINGS = YES
|
|
||||||
WARN_IF_UNDOCUMENTED = YES
|
|
||||||
WARN_IF_DOC_ERROR = YES
|
|
||||||
WARN_NO_PARAMDOC = NO
|
|
||||||
WARN_FORMAT = "$file:$line: $text"
|
|
||||||
WARN_LOGFILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the input files
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
INPUT = /large_disk/remotefpga_linux/auth_server_lin/auth_server_lin
|
|
||||||
INPUT_ENCODING = UTF-8
|
|
||||||
FILE_PATTERNS = *.c \
|
|
||||||
*.cc \
|
|
||||||
*.cxx \
|
|
||||||
*.cpp \
|
|
||||||
*.c++ \
|
|
||||||
*.d \
|
|
||||||
*.java \
|
|
||||||
*.ii \
|
|
||||||
*.ixx \
|
|
||||||
*.ipp \
|
|
||||||
*.i++ \
|
|
||||||
*.inl \
|
|
||||||
*.h \
|
|
||||||
*.hh \
|
|
||||||
*.hxx \
|
|
||||||
*.hpp \
|
|
||||||
*.h++ \
|
|
||||||
*.idl \
|
|
||||||
*.odl \
|
|
||||||
*.cs \
|
|
||||||
*.php \
|
|
||||||
*.php3 \
|
|
||||||
*.inc \
|
|
||||||
*.m \
|
|
||||||
*.mm \
|
|
||||||
*.dox \
|
|
||||||
*.py \
|
|
||||||
*.f90 \
|
|
||||||
*.f \
|
|
||||||
*.vhd \
|
|
||||||
*.vhdl \
|
|
||||||
*.C \
|
|
||||||
*.CC \
|
|
||||||
*.C++ \
|
|
||||||
*.II \
|
|
||||||
*.I++ \
|
|
||||||
*.H \
|
|
||||||
*.HH \
|
|
||||||
*.H++ \
|
|
||||||
*.CS \
|
|
||||||
*.PHP \
|
|
||||||
*.PHP3 \
|
|
||||||
*.M \
|
|
||||||
*.MM \
|
|
||||||
*.PY \
|
|
||||||
*.F90 \
|
|
||||||
*.F \
|
|
||||||
*.VHD \
|
|
||||||
*.VHDL \
|
|
||||||
*.C \
|
|
||||||
*.H \
|
|
||||||
*.tlh \
|
|
||||||
*.diff \
|
|
||||||
*.patch \
|
|
||||||
*.moc \
|
|
||||||
*.xpm \
|
|
||||||
*.dox
|
|
||||||
RECURSIVE = yes
|
|
||||||
EXCLUDE =
|
|
||||||
EXCLUDE_SYMLINKS = NO
|
|
||||||
EXCLUDE_PATTERNS =
|
|
||||||
EXCLUDE_SYMBOLS =
|
|
||||||
EXAMPLE_PATH =
|
|
||||||
EXAMPLE_PATTERNS = *
|
|
||||||
EXAMPLE_RECURSIVE = NO
|
|
||||||
IMAGE_PATH =
|
|
||||||
INPUT_FILTER =
|
|
||||||
FILTER_PATTERNS =
|
|
||||||
FILTER_SOURCE_FILES = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to source browsing
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SOURCE_BROWSER = NO
|
|
||||||
INLINE_SOURCES = NO
|
|
||||||
STRIP_CODE_COMMENTS = YES
|
|
||||||
REFERENCED_BY_RELATION = YES
|
|
||||||
REFERENCES_RELATION = YES
|
|
||||||
REFERENCES_LINK_SOURCE = YES
|
|
||||||
USE_HTAGS = NO
|
|
||||||
VERBATIM_HEADERS = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the alphabetical class index
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ALPHABETICAL_INDEX = NO
|
|
||||||
COLS_IN_ALPHA_INDEX = 5
|
|
||||||
IGNORE_PREFIX =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the HTML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_HTML = YES
|
|
||||||
HTML_OUTPUT = html
|
|
||||||
HTML_FILE_EXTENSION = .html
|
|
||||||
HTML_HEADER =
|
|
||||||
HTML_FOOTER =
|
|
||||||
HTML_STYLESHEET =
|
|
||||||
HTML_ALIGN_MEMBERS = YES
|
|
||||||
GENERATE_HTMLHELP = NO
|
|
||||||
GENERATE_DOCSET = NO
|
|
||||||
DOCSET_FEEDNAME = "Doxygen generated docs"
|
|
||||||
DOCSET_BUNDLE_ID = org.doxygen.Project
|
|
||||||
HTML_DYNAMIC_SECTIONS = NO
|
|
||||||
CHM_FILE =
|
|
||||||
HHC_LOCATION =
|
|
||||||
QTHELP_FILE =
|
|
||||||
QTHELP_CONFIG =
|
|
||||||
DOXYGEN2QTHELP_LOC =
|
|
||||||
GENERATE_CHI = NO
|
|
||||||
CHM_INDEX_ENCODING =
|
|
||||||
BINARY_TOC = NO
|
|
||||||
TOC_EXPAND = NO
|
|
||||||
DISABLE_INDEX = NO
|
|
||||||
ENUM_VALUES_PER_LINE = 4
|
|
||||||
GENERATE_TREEVIEW = NONE
|
|
||||||
TREEVIEW_WIDTH = 250
|
|
||||||
FORMULA_FONTSIZE = 10
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the LaTeX output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_LATEX = YES
|
|
||||||
LATEX_OUTPUT = latex
|
|
||||||
LATEX_CMD_NAME = latex
|
|
||||||
MAKEINDEX_CMD_NAME = makeindex
|
|
||||||
COMPACT_LATEX = NO
|
|
||||||
PAPER_TYPE = a4wide
|
|
||||||
EXTRA_PACKAGES =
|
|
||||||
LATEX_HEADER =
|
|
||||||
PDF_HYPERLINKS = NO
|
|
||||||
USE_PDFLATEX = NO
|
|
||||||
LATEX_BATCHMODE = NO
|
|
||||||
LATEX_HIDE_INDICES = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the RTF output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_RTF = NO
|
|
||||||
RTF_OUTPUT = rtf
|
|
||||||
COMPACT_RTF = NO
|
|
||||||
RTF_HYPERLINKS = NO
|
|
||||||
RTF_STYLESHEET_FILE =
|
|
||||||
RTF_EXTENSIONS_FILE =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the man page output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_MAN = NO
|
|
||||||
MAN_OUTPUT = man
|
|
||||||
MAN_EXTENSION = .3
|
|
||||||
MAN_LINKS = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the XML output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_XML = yes
|
|
||||||
XML_OUTPUT = xml
|
|
||||||
XML_SCHEMA =
|
|
||||||
XML_DTD =
|
|
||||||
XML_PROGRAMLISTING = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options for the AutoGen Definitions output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_AUTOGEN_DEF = NO
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# configuration options related to the Perl module output
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
GENERATE_PERLMOD = NO
|
|
||||||
PERLMOD_LATEX = NO
|
|
||||||
PERLMOD_PRETTY = YES
|
|
||||||
PERLMOD_MAKEVAR_PREFIX =
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the preprocessor
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
ENABLE_PREPROCESSING = YES
|
|
||||||
MACRO_EXPANSION = NO
|
|
||||||
EXPAND_ONLY_PREDEF = NO
|
|
||||||
SEARCH_INCLUDES = YES
|
|
||||||
INCLUDE_PATH =
|
|
||||||
INCLUDE_FILE_PATTERNS =
|
|
||||||
PREDEFINED =
|
|
||||||
EXPAND_AS_DEFINED =
|
|
||||||
SKIP_FUNCTION_MACROS = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::additions related to external references
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
TAGFILES =
|
|
||||||
GENERATE_TAGFILE = auth_server_lin.tag
|
|
||||||
ALLEXTERNALS = NO
|
|
||||||
EXTERNAL_GROUPS = YES
|
|
||||||
PERL_PATH = /usr/bin/perl
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration options related to the dot tool
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
CLASS_DIAGRAMS = YES
|
|
||||||
MSCGEN_PATH =
|
|
||||||
HIDE_UNDOC_RELATIONS = YES
|
|
||||||
HAVE_DOT = NO
|
|
||||||
DOT_FONTNAME = FreeSans
|
|
||||||
DOT_FONTPATH =
|
|
||||||
CLASS_GRAPH = YES
|
|
||||||
COLLABORATION_GRAPH = YES
|
|
||||||
GROUP_GRAPHS = YES
|
|
||||||
UML_LOOK = NO
|
|
||||||
TEMPLATE_RELATIONS = NO
|
|
||||||
INCLUDE_GRAPH = YES
|
|
||||||
INCLUDED_BY_GRAPH = YES
|
|
||||||
CALL_GRAPH = NO
|
|
||||||
CALLER_GRAPH = NO
|
|
||||||
GRAPHICAL_HIERARCHY = YES
|
|
||||||
DIRECTORY_GRAPH = YES
|
|
||||||
DOT_IMAGE_FORMAT = png
|
|
||||||
DOT_PATH =
|
|
||||||
DOTFILE_DIRS =
|
|
||||||
DOT_GRAPH_MAX_NODES = 50
|
|
||||||
MAX_DOT_GRAPH_DEPTH = 1000
|
|
||||||
DOT_TRANSPARENT = NO
|
|
||||||
DOT_MULTI_TARGETS = NO
|
|
||||||
GENERATE_LEGEND = YES
|
|
||||||
DOT_CLEANUP = YES
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
# Configuration::additions related to the search engine
|
|
||||||
#---------------------------------------------------------------------------
|
|
||||||
SEARCHENGINE = NO
|
|
@ -1,167 +0,0 @@
|
|||||||
Basic Installation
|
|
||||||
==================
|
|
||||||
|
|
||||||
These are generic installation instructions.
|
|
||||||
|
|
||||||
The `configure' shell script attempts to guess correct values for
|
|
||||||
various system-dependent variables used during compilation. It uses
|
|
||||||
those values to create a `Makefile' in each directory of the package.
|
|
||||||
It may also create one or more `.h' files containing system-dependent
|
|
||||||
definitions. Finally, it creates a shell script `config.status' that
|
|
||||||
you can run in the future to recreate the current configuration, a file
|
|
||||||
`config.cache' that saves the results of its tests to speed up
|
|
||||||
reconfiguring, and a file `config.log' containing compiler output
|
|
||||||
(useful mainly for debugging `configure').
|
|
||||||
|
|
||||||
If you need to do unusual things to compile the package, please try
|
|
||||||
to figure out how `configure' could check whether to do them, and mail
|
|
||||||
diffs or instructions to the address given in the `README' so they can
|
|
||||||
be considered for the next release. If at some point `config.cache'
|
|
||||||
contains results you don't want to keep, you may remove or edit it.
|
|
||||||
|
|
||||||
The file `configure.in' is used to create `configure' by a program
|
|
||||||
called `autoconf'. You only need `configure.in' if you want to change
|
|
||||||
it or regenerate `configure' using a newer version of `autoconf'.
|
|
||||||
|
|
||||||
The simplest way to compile this package is:
|
|
||||||
|
|
||||||
1. `cd' to the directory containing the package's source code and type
|
|
||||||
`./configure' to configure the package for your system. If you're
|
|
||||||
using `csh' on an old version of System V, you might need to type
|
|
||||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
|
||||||
`configure' itself.
|
|
||||||
|
|
||||||
Running `configure' takes a while. While running, it prints some
|
|
||||||
messages telling which features it is checking for.
|
|
||||||
|
|
||||||
2. Type `make' to compile the package.
|
|
||||||
|
|
||||||
3. Type `make install' to install the programs and any data files and
|
|
||||||
documentation.
|
|
||||||
|
|
||||||
4. You can remove the program binaries and object files from the
|
|
||||||
source code directory by typing `make clean'.
|
|
||||||
|
|
||||||
Compilers and Options
|
|
||||||
=====================
|
|
||||||
|
|
||||||
Some systems require unusual options for compilation or linking that
|
|
||||||
the `configure' script does not know about. You can give `configure'
|
|
||||||
initial values for variables by setting them in the environment. Using
|
|
||||||
a Bourne-compatible shell, you can do that on the command line like
|
|
||||||
this:
|
|
||||||
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
|
||||||
|
|
||||||
Or on systems that have the `env' program, you can do it like this:
|
|
||||||
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
|
||||||
|
|
||||||
Compiling For Multiple Architectures
|
|
||||||
====================================
|
|
||||||
|
|
||||||
You can compile the package for more than one kind of computer at the
|
|
||||||
same time, by placing the object files for each architecture in their
|
|
||||||
own directory. To do this, you must use a version of `make' that
|
|
||||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
|
||||||
directory where you want the object files and executables to go and run
|
|
||||||
the `configure' script. `configure' automatically checks for the
|
|
||||||
source code in the directory that `configure' is in and in `..'.
|
|
||||||
|
|
||||||
If you have to use a `make' that does not supports the `VPATH'
|
|
||||||
variable, you have to compile the package for one architecture at a time
|
|
||||||
in the source code directory. After you have installed the package for
|
|
||||||
one architecture, use `make distclean' before reconfiguring for another
|
|
||||||
architecture.
|
|
||||||
|
|
||||||
Installation Names
|
|
||||||
==================
|
|
||||||
|
|
||||||
By default, `make install' will install the package's files in
|
|
||||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
|
||||||
installation prefix other than `/usr/local' by giving `configure' the
|
|
||||||
option `--prefix=PATH'.
|
|
||||||
|
|
||||||
You can specify separate installation prefixes for
|
|
||||||
architecture-specific files and architecture-independent files. If you
|
|
||||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
|
||||||
PATH as the prefix for installing programs and libraries.
|
|
||||||
Documentation and other data files will still use the regular prefix.
|
|
||||||
|
|
||||||
If the package supports it, you can cause programs to be installed
|
|
||||||
with an extra prefix or suffix on their names by giving `configure' the
|
|
||||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
|
||||||
|
|
||||||
Optional Features
|
|
||||||
=================
|
|
||||||
|
|
||||||
Some packages pay attention to `--enable-FEATURE' options to
|
|
||||||
`configure', where FEATURE indicates an optional part of the package.
|
|
||||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
|
||||||
is something like `gnu-as' or `x' (for the X Window System). The
|
|
||||||
`README' should mention any `--enable-' and `--with-' options that the
|
|
||||||
package recognizes.
|
|
||||||
|
|
||||||
For packages that use the X Window System, `configure' can usually
|
|
||||||
find the X include and library files automatically, but if it doesn't,
|
|
||||||
you can use the `configure' options `--x-includes=DIR' and
|
|
||||||
`--x-libraries=DIR' to specify their locations.
|
|
||||||
|
|
||||||
Specifying the System Type
|
|
||||||
==========================
|
|
||||||
|
|
||||||
There may be some features `configure' can not figure out
|
|
||||||
automatically, but needs to determine by the type of host the package
|
|
||||||
will run on. Usually `configure' can figure that out, but if it prints
|
|
||||||
a message saying it can not guess the host type, give it the
|
|
||||||
`--host=TYPE' option. TYPE can either be a short name for the system
|
|
||||||
type, such as `sun4', or a canonical name with three fields:
|
|
||||||
CPU-COMPANY-SYSTEM
|
|
||||||
|
|
||||||
See the file `config.sub' for the possible values of each field. If
|
|
||||||
`config.sub' isn't included in this package, then this package doesn't
|
|
||||||
need to know the host type.
|
|
||||||
|
|
||||||
If you are building compiler tools for cross-compiling, you can also
|
|
||||||
use the `--target=TYPE' option to select the type of system they will
|
|
||||||
produce code for and the `--build=TYPE' option to select the type of
|
|
||||||
system on which you are compiling the package.
|
|
||||||
|
|
||||||
Sharing Defaults
|
|
||||||
================
|
|
||||||
|
|
||||||
If you want to set default values for `configure' scripts to share,
|
|
||||||
you can create a site shell script called `config.site' that gives
|
|
||||||
default values for variables like `CC', `cache_file', and `prefix'.
|
|
||||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
|
||||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
|
||||||
`CONFIG_SITE' environment variable to the location of the site script.
|
|
||||||
A warning: not all `configure' scripts look for a site script.
|
|
||||||
|
|
||||||
Operation Controls
|
|
||||||
==================
|
|
||||||
|
|
||||||
`configure' recognizes the following options to control how it
|
|
||||||
operates.
|
|
||||||
|
|
||||||
`--cache-file=FILE'
|
|
||||||
Use and save the results of the tests in FILE instead of
|
|
||||||
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
|
|
||||||
debugging `configure'.
|
|
||||||
|
|
||||||
`--help'
|
|
||||||
Print a summary of the options to `configure', and exit.
|
|
||||||
|
|
||||||
`--quiet'
|
|
||||||
`--silent'
|
|
||||||
`-q'
|
|
||||||
Do not print messages saying which checks are being made.
|
|
||||||
|
|
||||||
`--srcdir=DIR'
|
|
||||||
Look for the package's source code in directory DIR. Usually
|
|
||||||
`configure' can determine that directory automatically.
|
|
||||||
|
|
||||||
`--version'
|
|
||||||
Print the version of Autoconf used to generate the `configure'
|
|
||||||
script, and exit.
|
|
||||||
|
|
||||||
`configure' also accepts some other, not widely useful, options.
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
|||||||
# not a GNU package. You can remove this line, if
|
|
||||||
# have all needed files, that a GNU package needs
|
|
||||||
AUTOMAKE_OPTIONS = foreign 1.4
|
|
||||||
|
|
||||||
SUBDIRS = src
|
|
@ -1,8 +0,0 @@
|
|||||||
default: all
|
|
||||||
|
|
||||||
all:
|
|
||||||
aclocal
|
|
||||||
autoheader
|
|
||||||
automake
|
|
||||||
autoconf
|
|
||||||
|
|
@ -1,239 +0,0 @@
|
|||||||
<?xml version = '1.0'?>
|
|
||||||
<kdevelop>
|
|
||||||
<general>
|
|
||||||
<author>Timothy Pearson</author>
|
|
||||||
<email>kb9vqf@pearsoncomputing.net</email>
|
|
||||||
<version>0.1</version>
|
|
||||||
<projectmanagement>KDevAutoProject</projectmanagement>
|
|
||||||
<primarylanguage>C</primarylanguage>
|
|
||||||
<keywords>
|
|
||||||
<keyword>C</keyword>
|
|
||||||
<keyword>Code</keyword>
|
|
||||||
</keywords>
|
|
||||||
<ignoreparts/>
|
|
||||||
<projectname>auth_server_lin</projectname>
|
|
||||||
<projectdirectory>.</projectdirectory>
|
|
||||||
<absoluteprojectpath>false</absoluteprojectpath>
|
|
||||||
<description/>
|
|
||||||
<defaultencoding/>
|
|
||||||
<versioncontrol/>
|
|
||||||
</general>
|
|
||||||
<kdevautoproject>
|
|
||||||
<general>
|
|
||||||
<activetarget>src/auth_server_lin</activetarget>
|
|
||||||
<useconfiguration>debug</useconfiguration>
|
|
||||||
</general>
|
|
||||||
<run>
|
|
||||||
<mainprogram>/large_disk/remotefpga_linux/auth_server_lin/auth_server_lin/debug/src/auth_server_lin</mainprogram>
|
|
||||||
<terminal>true</terminal>
|
|
||||||
<programargs>server</programargs>
|
|
||||||
<globaldebugarguments/>
|
|
||||||
<globalcwd>/large_disk/remotefpga_linux/auth_server_lin/auth_server_lin/debug</globalcwd>
|
|
||||||
<useglobalprogram>true</useglobalprogram>
|
|
||||||
<autocompile>true</autocompile>
|
|
||||||
<autoinstall>false</autoinstall>
|
|
||||||
<autokdesu>false</autokdesu>
|
|
||||||
<envvars/>
|
|
||||||
</run>
|
|
||||||
<configurations>
|
|
||||||
<optimized>
|
|
||||||
<builddir>optimized</builddir>
|
|
||||||
<ccompiler>kdevgccoptions</ccompiler>
|
|
||||||
<cxxcompiler>kdevgppoptions</cxxcompiler>
|
|
||||||
<f77compiler>kdevg77options</f77compiler>
|
|
||||||
<cflags>-O2 -g0 </cflags>
|
|
||||||
</optimized>
|
|
||||||
<debug>
|
|
||||||
<configargs>--enable-debug=full</configargs>
|
|
||||||
<builddir>debug</builddir>
|
|
||||||
<ccompiler>kdevgccoptions</ccompiler>
|
|
||||||
<cxxcompiler>kdevgppoptions</cxxcompiler>
|
|
||||||
<f77compiler>kdevg77options</f77compiler>
|
|
||||||
<cflags>-O0 -g3</cflags>
|
|
||||||
<envvars/>
|
|
||||||
<topsourcedir/>
|
|
||||||
<cppflags/>
|
|
||||||
<ldflags/>
|
|
||||||
<ccompilerbinary/>
|
|
||||||
<cxxcompilerbinary/>
|
|
||||||
<f77compilerbinary/>
|
|
||||||
<cxxflags/>
|
|
||||||
<f77flags/>
|
|
||||||
</debug>
|
|
||||||
</configurations>
|
|
||||||
<make>
|
|
||||||
<envvars>
|
|
||||||
<envvar value="1" name="WANT_AUTOCONF_2_5" />
|
|
||||||
<envvar value="1" name="WANT_AUTOMAKE_1_6" />
|
|
||||||
</envvars>
|
|
||||||
<abortonerror>true</abortonerror>
|
|
||||||
<runmultiplejobs>false</runmultiplejobs>
|
|
||||||
<numberofjobs>1</numberofjobs>
|
|
||||||
<dontact>false</dontact>
|
|
||||||
<makebin/>
|
|
||||||
<prio>0</prio>
|
|
||||||
</make>
|
|
||||||
</kdevautoproject>
|
|
||||||
<kdevdoctreeview>
|
|
||||||
<ignoretocs>
|
|
||||||
<toc>ada</toc>
|
|
||||||
<toc>ada_bugs_gcc</toc>
|
|
||||||
<toc>bash</toc>
|
|
||||||
<toc>bash_bugs</toc>
|
|
||||||
<toc>clanlib</toc>
|
|
||||||
<toc>w3c-dom-level2-html</toc>
|
|
||||||
<toc>fortran_bugs_gcc</toc>
|
|
||||||
<toc>gnome1</toc>
|
|
||||||
<toc>gnustep</toc>
|
|
||||||
<toc>gtk</toc>
|
|
||||||
<toc>gtk_bugs</toc>
|
|
||||||
<toc>haskell</toc>
|
|
||||||
<toc>haskell_bugs_ghc</toc>
|
|
||||||
<toc>java_bugs_gcc</toc>
|
|
||||||
<toc>java_bugs_sun</toc>
|
|
||||||
<toc>kde2book</toc>
|
|
||||||
<toc>libstdc++</toc>
|
|
||||||
<toc>opengl</toc>
|
|
||||||
<toc>pascal_bugs_fp</toc>
|
|
||||||
<toc>php</toc>
|
|
||||||
<toc>php_bugs</toc>
|
|
||||||
<toc>perl</toc>
|
|
||||||
<toc>perl_bugs</toc>
|
|
||||||
<toc>python</toc>
|
|
||||||
<toc>python_bugs</toc>
|
|
||||||
<toc>qt-kdev3</toc>
|
|
||||||
<toc>ruby</toc>
|
|
||||||
<toc>ruby_bugs</toc>
|
|
||||||
<toc>sdl</toc>
|
|
||||||
<toc>stl</toc>
|
|
||||||
<toc>w3c-svg</toc>
|
|
||||||
<toc>sw</toc>
|
|
||||||
<toc>w3c-uaag10</toc>
|
|
||||||
<toc>wxwidgets_bugs</toc>
|
|
||||||
</ignoretocs>
|
|
||||||
<ignoreqt_xml>
|
|
||||||
<toc>Guide to the Qt Translation Tools</toc>
|
|
||||||
<toc>Qt Assistant Manual</toc>
|
|
||||||
<toc>Qt Designer Manual</toc>
|
|
||||||
<toc>Qt Reference Documentation</toc>
|
|
||||||
<toc>qmake User Guide</toc>
|
|
||||||
</ignoreqt_xml>
|
|
||||||
<ignoredoxygen>
|
|
||||||
<toc>KDE Libraries (Doxygen)</toc>
|
|
||||||
</ignoredoxygen>
|
|
||||||
</kdevdoctreeview>
|
|
||||||
<kdevfilecreate>
|
|
||||||
<filetypes/>
|
|
||||||
<useglobaltypes>
|
|
||||||
<type ext="c" />
|
|
||||||
<type ext="h" />
|
|
||||||
</useglobaltypes>
|
|
||||||
</kdevfilecreate>
|
|
||||||
<kdevfileview>
|
|
||||||
<groups>
|
|
||||||
<group pattern="*.h" name="Header files" />
|
|
||||||
<group pattern="*.c" name="Source files" />
|
|
||||||
<hidenonprojectfiles>false</hidenonprojectfiles>
|
|
||||||
<hidenonlocation>false</hidenonlocation>
|
|
||||||
</groups>
|
|
||||||
<tree>
|
|
||||||
<hidepatterns>*.o,*.lo,CVS</hidepatterns>
|
|
||||||
<hidenonprojectfiles>false</hidenonprojectfiles>
|
|
||||||
</tree>
|
|
||||||
</kdevfileview>
|
|
||||||
<kdevdocumentation>
|
|
||||||
<projectdoc>
|
|
||||||
<docsystem>Doxygen Documentation Collection</docsystem>
|
|
||||||
<docurl>auth_server_lin.tag</docurl>
|
|
||||||
<usermanualurl/>
|
|
||||||
</projectdoc>
|
|
||||||
</kdevdocumentation>
|
|
||||||
<substmap>
|
|
||||||
<APPNAME>auth_server_lin</APPNAME>
|
|
||||||
<APPNAMELC>auth_server_lin</APPNAMELC>
|
|
||||||
<APPNAMESC>Auth_server_lin</APPNAMESC>
|
|
||||||
<APPNAMEUC>AUTH_SERVER_LIN</APPNAMEUC>
|
|
||||||
<AUTHOR>Timothy Pearson</AUTHOR>
|
|
||||||
<CFLAGS/>
|
|
||||||
<EMAIL>kb9vqf@pearsoncomputing.net</EMAIL>
|
|
||||||
<LICENSE>Custom</LICENSE>
|
|
||||||
<OPT_INCS>-I/usr/include</OPT_INCS>
|
|
||||||
<OPT_LIBS>-lm</OPT_LIBS>
|
|
||||||
<VERSION>0.1</VERSION>
|
|
||||||
<YEAR>2009</YEAR>
|
|
||||||
<dest>/large_disk/remotefpga_linux/auth_server_lin/auth_server_lin</dest>
|
|
||||||
</substmap>
|
|
||||||
<kdevcppsupport>
|
|
||||||
<qt>
|
|
||||||
<used>false</used>
|
|
||||||
<version>3</version>
|
|
||||||
<includestyle>3</includestyle>
|
|
||||||
<root>/usr/share/qt3</root>
|
|
||||||
<designerintegration>EmbeddedKDevDesigner</designerintegration>
|
|
||||||
<qmake>/usr/bin/qmake-qt3</qmake>
|
|
||||||
<designer>/usr/bin/designer-qt3</designer>
|
|
||||||
<designerpluginpaths/>
|
|
||||||
</qt>
|
|
||||||
<codecompletion>
|
|
||||||
<automaticCodeCompletion>false</automaticCodeCompletion>
|
|
||||||
<automaticArgumentsHint>true</automaticArgumentsHint>
|
|
||||||
<automaticHeaderCompletion>true</automaticHeaderCompletion>
|
|
||||||
<codeCompletionDelay>250</codeCompletionDelay>
|
|
||||||
<argumentsHintDelay>400</argumentsHintDelay>
|
|
||||||
<headerCompletionDelay>250</headerCompletionDelay>
|
|
||||||
<showOnlyAccessibleItems>false</showOnlyAccessibleItems>
|
|
||||||
<completionBoxItemOrder>0</completionBoxItemOrder>
|
|
||||||
<howEvaluationContextMenu>true</howEvaluationContextMenu>
|
|
||||||
<showCommentWithArgumentHint>true</showCommentWithArgumentHint>
|
|
||||||
<statusBarTypeEvaluation>false</statusBarTypeEvaluation>
|
|
||||||
<namespaceAliases>std=_GLIBCXX_STD;__gnu_cxx=std</namespaceAliases>
|
|
||||||
<processPrimaryTypes>true</processPrimaryTypes>
|
|
||||||
<processFunctionArguments>false</processFunctionArguments>
|
|
||||||
<preProcessAllHeaders>false</preProcessAllHeaders>
|
|
||||||
<parseMissingHeadersExperimental>false</parseMissingHeadersExperimental>
|
|
||||||
<resolveIncludePathsUsingMakeExperimental>false</resolveIncludePathsUsingMakeExperimental>
|
|
||||||
<alwaysParseInBackground>true</alwaysParseInBackground>
|
|
||||||
<usePermanentCaching>true</usePermanentCaching>
|
|
||||||
<alwaysIncludeNamespaces>false</alwaysIncludeNamespaces>
|
|
||||||
<includePaths>.;</includePaths>
|
|
||||||
</codecompletion>
|
|
||||||
<creategettersetter>
|
|
||||||
<prefixGet/>
|
|
||||||
<prefixSet>set</prefixSet>
|
|
||||||
<prefixVariable>m_,_</prefixVariable>
|
|
||||||
<parameterName>theValue</parameterName>
|
|
||||||
<inlineGet>true</inlineGet>
|
|
||||||
<inlineSet>true</inlineSet>
|
|
||||||
</creategettersetter>
|
|
||||||
<splitheadersource>
|
|
||||||
<enabled>false</enabled>
|
|
||||||
<synchronize>true</synchronize>
|
|
||||||
<orientation>Vertical</orientation>
|
|
||||||
</splitheadersource>
|
|
||||||
<references/>
|
|
||||||
</kdevcppsupport>
|
|
||||||
<cppsupportpart>
|
|
||||||
<filetemplates>
|
|
||||||
<interfacesuffix>.h</interfacesuffix>
|
|
||||||
<implementationsuffix>.cpp</implementationsuffix>
|
|
||||||
</filetemplates>
|
|
||||||
</cppsupportpart>
|
|
||||||
<kdevdebugger>
|
|
||||||
<general>
|
|
||||||
<gdbpath/>
|
|
||||||
<dbgshell>libtool</dbgshell>
|
|
||||||
<configGdbScript/>
|
|
||||||
<runShellScript/>
|
|
||||||
<runGdbScript/>
|
|
||||||
<breakonloadinglibs>true</breakonloadinglibs>
|
|
||||||
<separatetty>false</separatetty>
|
|
||||||
<floatingtoolbar>false</floatingtoolbar>
|
|
||||||
<raiseGDBOnStart>false</raiseGDBOnStart>
|
|
||||||
</general>
|
|
||||||
<display>
|
|
||||||
<staticmembers>false</staticmembers>
|
|
||||||
<demanglenames>true</demanglenames>
|
|
||||||
<outputradix>10</outputradix>
|
|
||||||
</display>
|
|
||||||
</kdevdebugger>
|
|
||||||
</kdevelop>
|
|
Binary file not shown.
@ -1,31 +0,0 @@
|
|||||||
<?xml version = '1.0' encoding = 'UTF-8'?>
|
|
||||||
<!DOCTYPE KDevPrjSession>
|
|
||||||
<KDevPrjSession>
|
|
||||||
<DocsAndViews NumberOfDocuments="2" >
|
|
||||||
<Doc0 NumberOfViews="1" URL="file:///large_disk/remotefpga_linux/auth_server_lin/auth_server_lin/src/auth_server_lin.c" >
|
|
||||||
<View0 Encoding="" line="80" Type="Source" />
|
|
||||||
</Doc0>
|
|
||||||
<Doc1 NumberOfViews="1" URL="file:///large_disk2/fpga_projects/ele430_serial/vb_client/remote_access_client.frm" >
|
|
||||||
<View0 Encoding="UTF-8" line="2261" Type="Source" />
|
|
||||||
</Doc1>
|
|
||||||
</DocsAndViews>
|
|
||||||
<pluginList>
|
|
||||||
<kdevdebugger>
|
|
||||||
<breakpointList/>
|
|
||||||
<showInternalCommands value="0" />
|
|
||||||
</kdevdebugger>
|
|
||||||
<kdevastyle>
|
|
||||||
<Extensions ext="*.cpp *.h,*.c *.h,*.cxx *.hxx,*.c++ *.h++,*.cc *.hh,*.C *.H,*.diff,*.inl,*.java,*.moc,*.patch,*.tlh,*.xpm" />
|
|
||||||
<AStyle IndentPreprocessors="0" FillCount="4" PadParenthesesOut="1" IndentNamespaces="1" IndentLabels="1" Fill="Tabs" MaxStatement="40" Brackets="Break" MinConditional="-1" IndentBrackets="0" PadParenthesesUn="1" BlockBreak="0" KeepStatements="1" KeepBlocks="1" BlockIfElse="0" IndentSwitches="1" PadOperators="0" FStyle="UserDefined" IndentCases="0" FillEmptyLines="0" BracketsCloseHeaders="0" BlockBreakAll="0" PadParenthesesIn="1" IndentClasses="1" IndentBlocks="0" FillForce="0" />
|
|
||||||
</kdevastyle>
|
|
||||||
<kdevbookmarks>
|
|
||||||
<bookmarks/>
|
|
||||||
</kdevbookmarks>
|
|
||||||
<kdevvalgrind>
|
|
||||||
<executable path="" params="" />
|
|
||||||
<valgrind path="" params="" />
|
|
||||||
<calltree path="" params="" />
|
|
||||||
<kcachegrind path="" />
|
|
||||||
</kdevvalgrind>
|
|
||||||
</pluginList>
|
|
||||||
</KDevPrjSession>
|
|
File diff suppressed because it is too large
Load Diff
@ -1,59 +0,0 @@
|
|||||||
/* config.h.in. Generated from configure.in by autoheader. */
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
|
||||||
#undef HAVE_DLFCN_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
|
||||||
#undef HAVE_INTTYPES_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <memory.h> header file. */
|
|
||||||
#undef HAVE_MEMORY_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <stdint.h> header file. */
|
|
||||||
#undef HAVE_STDINT_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
|
||||||
#undef HAVE_STDLIB_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <strings.h> header file. */
|
|
||||||
#undef HAVE_STRINGS_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <string.h> header file. */
|
|
||||||
#undef HAVE_STRING_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
|
||||||
#undef HAVE_SYS_STAT_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
|
||||||
#undef HAVE_SYS_TYPES_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <unistd.h> header file. */
|
|
||||||
#undef HAVE_UNISTD_H
|
|
||||||
|
|
||||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
|
||||||
*/
|
|
||||||
#undef LT_OBJDIR
|
|
||||||
|
|
||||||
/* Name of package */
|
|
||||||
#undef PACKAGE
|
|
||||||
|
|
||||||
/* Define to the address where bug reports for this package should be sent. */
|
|
||||||
#undef PACKAGE_BUGREPORT
|
|
||||||
|
|
||||||
/* Define to the full name of this package. */
|
|
||||||
#undef PACKAGE_NAME
|
|
||||||
|
|
||||||
/* Define to the full name and version of this package. */
|
|
||||||
#undef PACKAGE_STRING
|
|
||||||
|
|
||||||
/* Define to the one symbol short name of this package. */
|
|
||||||
#undef PACKAGE_TARNAME
|
|
||||||
|
|
||||||
/* Define to the version of this package. */
|
|
||||||
#undef PACKAGE_VERSION
|
|
||||||
|
|
||||||
/* Define to 1 if you have the ANSI C header files. */
|
|
||||||
#undef STDC_HEADERS
|
|
||||||
|
|
||||||
/* Version number of package */
|
|
||||||
#undef VERSION
|
|
File diff suppressed because it is too large
Load Diff
@ -1,10 +0,0 @@
|
|||||||
AC_INIT(configure.in)
|
|
||||||
|
|
||||||
AM_CONFIG_HEADER(config.h)
|
|
||||||
AM_INIT_AUTOMAKE(auth_server_lin, 0.1)
|
|
||||||
|
|
||||||
AC_LANG_C
|
|
||||||
AC_PROG_CC
|
|
||||||
AM_PROG_LIBTOOL
|
|
||||||
|
|
||||||
AC_OUTPUT(Makefile src/Makefile)
|
|
@ -1,441 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
|
|
||||||
# depcomp - compile a program generating dependencies as side-effects
|
|
||||||
# Copyright 1999, 2000 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
# 02111-1307, USA.
|
|
||||||
|
|
||||||
# As a special exception to the GNU General Public License, if you
|
|
||||||
# distribute this file as part of a program that contains a
|
|
||||||
# configuration script generated by Autoconf, you may include it under
|
|
||||||
# the same distribution terms that you use for the rest of that program.
|
|
||||||
|
|
||||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
|
||||||
|
|
||||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
|
||||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
# `libtool' can also be set to `yes' or `no'.
|
|
||||||
|
|
||||||
depfile=${depfile-`echo "$object" | sed 's,\([^/]*\)$,.deps/\1,;s/\.\([^.]*\)$/.P\1/'`}
|
|
||||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
|
||||||
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
|
|
||||||
# Some modes work just like other modes, but use different flags. We
|
|
||||||
# parameterize here, but still list the modes in the big case below,
|
|
||||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
|
||||||
# here, because this file can only contain one case statement.
|
|
||||||
if test "$depmode" = hp; then
|
|
||||||
# HP compiler uses -M and no extra arg.
|
|
||||||
gccflag=-M
|
|
||||||
depmode=gcc
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$depmode" = dashXmstdout; then
|
|
||||||
# This is just like dashmstdout with a different argument.
|
|
||||||
dashmflag=-xM
|
|
||||||
depmode=dashmstdout
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$depmode" in
|
|
||||||
gcc3)
|
|
||||||
## gcc 3 implements dependency tracking that does exactly what
|
|
||||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
|
||||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
|
||||||
"$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
|
|
||||||
stat=$?
|
|
||||||
if test $stat -eq 0; then :
|
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
exit $stat
|
|
||||||
fi
|
|
||||||
mv "$tmpdepfile" "$depfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
gcc)
|
|
||||||
## There are various ways to get dependency output from gcc. Here's
|
|
||||||
## why we pick this rather obscure method:
|
|
||||||
## - Don't want to use -MD because we'd like the dependencies to end
|
|
||||||
## up in a subdir. Having to rename by hand is ugly.
|
|
||||||
## (We might end up doing this anyway to support other compilers.)
|
|
||||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
|
||||||
## -MM, not -M (despite what the docs say).
|
|
||||||
## - Using -M directly means running the compiler twice (even worse
|
|
||||||
## than renaming).
|
|
||||||
if test -z "$gccflag"; then
|
|
||||||
gccflag=-MD,
|
|
||||||
fi
|
|
||||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
|
||||||
stat=$?
|
|
||||||
if test $stat -eq 0; then :
|
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
exit $stat
|
|
||||||
fi
|
|
||||||
rm -f "$depfile"
|
|
||||||
echo "$object : \\" > "$depfile"
|
|
||||||
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
|
||||||
## The second -e expression handles DOS-style file names with drive letters.
|
|
||||||
sed -e 's/^[^:]*: / /' \
|
|
||||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
|
||||||
## This next piece of magic avoids the `deleted header file' problem.
|
|
||||||
## The problem is that when a header file which appears in a .P file
|
|
||||||
## is deleted, the dependency causes make to die (because there is
|
|
||||||
## typically no way to rebuild the header). We avoid this by adding
|
|
||||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
|
||||||
## this for us directly.
|
|
||||||
tr ' ' '
|
|
||||||
' < "$tmpdepfile" |
|
|
||||||
## Some versions of gcc put a space before the `:'. On the theory
|
|
||||||
## that the space means something, we add a space to the output as
|
|
||||||
## well.
|
|
||||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
|
||||||
## correctly. Breaking it into two sed invocations is a workaround.
|
|
||||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
hp)
|
|
||||||
# This case exists only to let depend.m4 do its work. It works by
|
|
||||||
# looking at the text of this script. This case will never be run,
|
|
||||||
# since it is checked for above.
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
|
|
||||||
sgi)
|
|
||||||
if test "$libtool" = yes; then
|
|
||||||
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
|
||||||
else
|
|
||||||
"$@" -MDupdate "$tmpdepfile"
|
|
||||||
fi
|
|
||||||
stat=$?
|
|
||||||
if test $stat -eq 0; then :
|
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
exit $stat
|
|
||||||
fi
|
|
||||||
rm -f "$depfile"
|
|
||||||
|
|
||||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
|
||||||
echo "$object : \\" > "$depfile"
|
|
||||||
|
|
||||||
# Clip off the initial element (the dependent). Don't try to be
|
|
||||||
# clever and replace this with sed code, as IRIX sed won't handle
|
|
||||||
# lines with more than a fixed number of characters (4096 in
|
|
||||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
|
||||||
# the IRIX cc adds comments like `#:fec' to the end of the
|
|
||||||
# dependency line.
|
|
||||||
tr ' ' '
|
|
||||||
' < "$tmpdepfile" \
|
|
||||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
|
||||||
tr '
|
|
||||||
' ' ' >> $depfile
|
|
||||||
echo >> $depfile
|
|
||||||
|
|
||||||
# The second pass generates a dummy entry for each header file.
|
|
||||||
tr ' ' '
|
|
||||||
' < "$tmpdepfile" \
|
|
||||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
|
||||||
>> $depfile
|
|
||||||
else
|
|
||||||
# The sourcefile does not contain any dependencies, so just
|
|
||||||
# store a dummy comment line, to avoid errors with the Makefile
|
|
||||||
# "include basename.Plo" scheme.
|
|
||||||
echo "#dummy" > "$depfile"
|
|
||||||
fi
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
aix)
|
|
||||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
|
||||||
# in a .u file. This file always lives in the current directory.
|
|
||||||
# Also, the AIX compiler puts `$object:' at the start of each line;
|
|
||||||
# $object doesn't have directory information.
|
|
||||||
stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
|
|
||||||
tmpdepfile="$stripped.u"
|
|
||||||
outname="$stripped.o"
|
|
||||||
if test "$libtool" = yes; then
|
|
||||||
"$@" -Wc,-M
|
|
||||||
else
|
|
||||||
"$@" -M
|
|
||||||
fi
|
|
||||||
|
|
||||||
stat=$?
|
|
||||||
if test $stat -eq 0; then :
|
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
exit $stat
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -f "$tmpdepfile"; then
|
|
||||||
# Each line is of the form `foo.o: dependent.h'.
|
|
||||||
# Do two passes, one to just change these to
|
|
||||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
|
||||||
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
|
|
||||||
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
|
|
||||||
else
|
|
||||||
# The sourcefile does not contain any dependencies, so just
|
|
||||||
# store a dummy comment line, to avoid errors with the Makefile
|
|
||||||
# "include basename.Plo" scheme.
|
|
||||||
echo "#dummy" > "$depfile"
|
|
||||||
fi
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
icc)
|
|
||||||
# Must come before tru64.
|
|
||||||
|
|
||||||
# Intel's C compiler understands `-MD -MF file'. However
|
|
||||||
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
|
|
||||||
# will fill foo.d with something like
|
|
||||||
# foo.o: sub/foo.c
|
|
||||||
# foo.o: sub/foo.h
|
|
||||||
# which is wrong. We want:
|
|
||||||
# sub/foo.o: sub/foo.c
|
|
||||||
# sub/foo.o: sub/foo.h
|
|
||||||
# sub/foo.c:
|
|
||||||
# sub/foo.h:
|
|
||||||
|
|
||||||
"$@" -MD -MF "$tmpdepfile"
|
|
||||||
stat=$?
|
|
||||||
if test $stat -eq 0; then :
|
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
exit $stat
|
|
||||||
fi
|
|
||||||
rm -f "$depfile"
|
|
||||||
# Each line is of the form `foo.o: dependent.h'.
|
|
||||||
# Do two passes, one to just change these to
|
|
||||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
|
||||||
sed -e "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
|
||||||
sed -e "s,^[^:]*: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
tru64)
|
|
||||||
# The Tru64 AIX compiler uses -MD to generate dependencies as a side
|
|
||||||
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
|
||||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
|
||||||
# dependencies in `foo.d' instead, so we check for that too.
|
|
||||||
# Subdirectories are respected.
|
|
||||||
|
|
||||||
tmpdepfile1="$object.d"
|
|
||||||
tmpdepfile2=`echo "$object" | sed -e 's/.o$/.d/'`
|
|
||||||
if test "$libtool" = yes; then
|
|
||||||
"$@" -Wc,-MD
|
|
||||||
else
|
|
||||||
"$@" -MD
|
|
||||||
fi
|
|
||||||
|
|
||||||
stat=$?
|
|
||||||
if test $stat -eq 0; then :
|
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
|
||||||
exit $stat
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -f "$tmpdepfile1"; then
|
|
||||||
tmpdepfile="$tmpdepfile1"
|
|
||||||
else
|
|
||||||
tmpdepfile="$tmpdepfile2"
|
|
||||||
fi
|
|
||||||
if test -f "$tmpdepfile"; then
|
|
||||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
|
||||||
# That's a space and a tab in the [].
|
|
||||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
|
||||||
else
|
|
||||||
echo "#dummy" > "$depfile"
|
|
||||||
fi
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
#nosideeffect)
|
|
||||||
# This comment above is used by automake to tell side-effect
|
|
||||||
# dependency tracking mechanisms from slower ones.
|
|
||||||
|
|
||||||
dashmstdout)
|
|
||||||
# Important note: in order to support this mode, a compiler *must*
|
|
||||||
# always write the proprocessed file to stdout, regardless of -o,
|
|
||||||
# because we must use -o when running libtool.
|
|
||||||
test -z "$dashmflag" && dashmflag=-M
|
|
||||||
( IFS=" "
|
|
||||||
case " $* " in
|
|
||||||
*" --mode=compile "*) # this is libtool, let us make it quiet
|
|
||||||
for arg
|
|
||||||
do # cycle over the arguments
|
|
||||||
case "$arg" in
|
|
||||||
"--mode=compile")
|
|
||||||
# insert --quiet before "--mode=compile"
|
|
||||||
set fnord "$@" --quiet
|
|
||||||
shift # fnord
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
set fnord "$@" "$arg"
|
|
||||||
shift # fnord
|
|
||||||
shift # "$arg"
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
"$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
|
||||||
) &
|
|
||||||
proc=$!
|
|
||||||
"$@"
|
|
||||||
stat=$?
|
|
||||||
wait "$proc"
|
|
||||||
if test "$stat" != 0; then exit $stat; fi
|
|
||||||
rm -f "$depfile"
|
|
||||||
cat < "$tmpdepfile" > "$depfile"
|
|
||||||
tr ' ' '
|
|
||||||
' < "$tmpdepfile" | \
|
|
||||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
|
||||||
## correctly. Breaking it into two sed invocations is a workaround.
|
|
||||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
dashXmstdout)
|
|
||||||
# This case only exists to satisfy depend.m4. It is never actually
|
|
||||||
# run, as this mode is specially recognized in the preamble.
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
|
|
||||||
makedepend)
|
|
||||||
# X makedepend
|
|
||||||
(
|
|
||||||
shift
|
|
||||||
cleared=no
|
|
||||||
for arg in "$@"; do
|
|
||||||
case $cleared in no)
|
|
||||||
set ""; shift
|
|
||||||
cleared=yes
|
|
||||||
esac
|
|
||||||
case "$arg" in
|
|
||||||
-D*|-I*)
|
|
||||||
set fnord "$@" "$arg"; shift;;
|
|
||||||
-*)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
set fnord "$@" "$arg"; shift;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
obj_suffix="`echo $object | sed 's/^.*\././'`"
|
|
||||||
touch "$tmpdepfile"
|
|
||||||
${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
|
||||||
) &
|
|
||||||
proc=$!
|
|
||||||
"$@"
|
|
||||||
stat=$?
|
|
||||||
wait "$proc"
|
|
||||||
if test "$stat" != 0; then exit $stat; fi
|
|
||||||
rm -f "$depfile"
|
|
||||||
cat < "$tmpdepfile" > "$depfile"
|
|
||||||
tail +3 "$tmpdepfile" | tr ' ' '
|
|
||||||
' | \
|
|
||||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
|
||||||
## correctly. Breaking it into two sed invocations is a workaround.
|
|
||||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
|
||||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
|
||||||
;;
|
|
||||||
|
|
||||||
cpp)
|
|
||||||
# Important note: in order to support this mode, a compiler *must*
|
|
||||||
# always write the proprocessed file to stdout, regardless of -o,
|
|
||||||
# because we must use -o when running libtool.
|
|
||||||
( IFS=" "
|
|
||||||
case " $* " in
|
|
||||||
*" --mode=compile "*)
|
|
||||||
for arg
|
|
||||||
do # cycle over the arguments
|
|
||||||
case $arg in
|
|
||||||
"--mode=compile")
|
|
||||||
# insert --quiet before "--mode=compile"
|
|
||||||
set fnord "$@" --quiet
|
|
||||||
shift # fnord
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
set fnord "$@" "$arg"
|
|
||||||
shift # fnord
|
|
||||||
shift # "$arg"
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
"$@" -E |
|
|
||||||
sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
|
||||||
sed '$ s: \\$::' > "$tmpdepfile"
|
|
||||||
) &
|
|
||||||
proc=$!
|
|
||||||
"$@"
|
|
||||||
stat=$?
|
|
||||||
wait "$proc"
|
|
||||||
if test "$stat" != 0; then exit $stat; fi
|
|
||||||
rm -f "$depfile"
|
|
||||||
echo "$object : \\" > "$depfile"
|
|
||||||
cat < "$tmpdepfile" >> "$depfile"
|
|
||||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
msvisualcpp)
|
|
||||||
# Important note: in order to support this mode, a compiler *must*
|
|
||||||
# always write the proprocessed file to stdout, regardless of -o,
|
|
||||||
# because we must use -o when running libtool.
|
|
||||||
( IFS=" "
|
|
||||||
case " $* " in
|
|
||||||
*" --mode=compile "*)
|
|
||||||
for arg
|
|
||||||
do # cycle over the arguments
|
|
||||||
case $arg in
|
|
||||||
"--mode=compile")
|
|
||||||
# insert --quiet before "--mode=compile"
|
|
||||||
set fnord "$@" --quiet
|
|
||||||
shift # fnord
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
set fnord "$@" "$arg"
|
|
||||||
shift # fnord
|
|
||||||
shift # "$arg"
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
"$@" -E |
|
|
||||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
|
||||||
) &
|
|
||||||
proc=$!
|
|
||||||
"$@"
|
|
||||||
stat=$?
|
|
||||||
wait "$proc"
|
|
||||||
if test "$stat" != 0; then exit $stat; fi
|
|
||||||
rm -f "$depfile"
|
|
||||||
echo "$object : \\" > "$depfile"
|
|
||||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
|
||||||
echo " " >> "$depfile"
|
|
||||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
none)
|
|
||||||
exec "$@"
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo "Unknown depmode $depmode" 1>&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit 0
|
|
@ -1,276 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# install - install a program, script, or datafile
|
|
||||||
# This comes from X11R5 (mit/util/scripts/install.sh).
|
|
||||||
#
|
|
||||||
# Copyright 1991 by the Massachusetts Institute of Technology
|
|
||||||
#
|
|
||||||
# Permission to use, copy, modify, distribute, and sell this software and its
|
|
||||||
# documentation for any purpose is hereby granted without fee, provided that
|
|
||||||
# the above copyright notice appear in all copies and that both that
|
|
||||||
# copyright notice and this permission notice appear in supporting
|
|
||||||
# documentation, and that the name of M.I.T. not be used in advertising or
|
|
||||||
# publicity pertaining to distribution of the software without specific,
|
|
||||||
# written prior permission. M.I.T. makes no representations about the
|
|
||||||
# suitability of this software for any purpose. It is provided "as is"
|
|
||||||
# without express or implied warranty.
|
|
||||||
#
|
|
||||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
|
||||||
# `make' implicit rules from creating a file called install from it
|
|
||||||
# when there is no Makefile.
|
|
||||||
#
|
|
||||||
# This script is compatible with the BSD install script, but was written
|
|
||||||
# from scratch. It can only install one file at a time, a restriction
|
|
||||||
# shared with many OS's install programs.
|
|
||||||
|
|
||||||
|
|
||||||
# set DOITPROG to echo to test this script
|
|
||||||
|
|
||||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
|
||||||
doit="${DOITPROG-}"
|
|
||||||
|
|
||||||
|
|
||||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
|
||||||
|
|
||||||
mvprog="${MVPROG-mv}"
|
|
||||||
cpprog="${CPPROG-cp}"
|
|
||||||
chmodprog="${CHMODPROG-chmod}"
|
|
||||||
chownprog="${CHOWNPROG-chown}"
|
|
||||||
chgrpprog="${CHGRPPROG-chgrp}"
|
|
||||||
stripprog="${STRIPPROG-strip}"
|
|
||||||
rmprog="${RMPROG-rm}"
|
|
||||||
mkdirprog="${MKDIRPROG-mkdir}"
|
|
||||||
|
|
||||||
transformbasename=""
|
|
||||||
transform_arg=""
|
|
||||||
instcmd="$mvprog"
|
|
||||||
chmodcmd="$chmodprog 0755"
|
|
||||||
chowncmd=""
|
|
||||||
chgrpcmd=""
|
|
||||||
stripcmd=""
|
|
||||||
rmcmd="$rmprog -f"
|
|
||||||
mvcmd="$mvprog"
|
|
||||||
src=""
|
|
||||||
dst=""
|
|
||||||
dir_arg=""
|
|
||||||
|
|
||||||
while [ x"$1" != x ]; do
|
|
||||||
case $1 in
|
|
||||||
-c) instcmd=$cpprog
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-d) dir_arg=true
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-m) chmodcmd="$chmodprog $2"
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-o) chowncmd="$chownprog $2"
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-g) chgrpcmd="$chgrpprog $2"
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-s) stripcmd=$stripprog
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
|
|
||||||
*) if [ x"$src" = x ]
|
|
||||||
then
|
|
||||||
src=$1
|
|
||||||
else
|
|
||||||
# this colon is to work around a 386BSD /bin/sh bug
|
|
||||||
:
|
|
||||||
dst=$1
|
|
||||||
fi
|
|
||||||
shift
|
|
||||||
continue;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ x"$src" = x ]
|
|
||||||
then
|
|
||||||
echo "$0: no input file specified" >&2
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
:
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ x"$dir_arg" != x ]; then
|
|
||||||
dst=$src
|
|
||||||
src=""
|
|
||||||
|
|
||||||
if [ -d "$dst" ]; then
|
|
||||||
instcmd=:
|
|
||||||
chmodcmd=""
|
|
||||||
else
|
|
||||||
instcmd=$mkdirprog
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
|
|
||||||
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
|
||||||
# might cause directories to be created, which would be especially bad
|
|
||||||
# if $src (and thus $dsttmp) contains '*'.
|
|
||||||
|
|
||||||
if [ -f "$src" ] || [ -d "$src" ]
|
|
||||||
then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
echo "$0: $src does not exist" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ x"$dst" = x ]
|
|
||||||
then
|
|
||||||
echo "$0: no destination specified" >&2
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
:
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If destination is a directory, append the input filename; if your system
|
|
||||||
# does not like double slashes in filenames, you may need to add some logic
|
|
||||||
|
|
||||||
if [ -d "$dst" ]
|
|
||||||
then
|
|
||||||
dst=$dst/`basename "$src"`
|
|
||||||
else
|
|
||||||
:
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
## this sed command emulates the dirname command
|
|
||||||
dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
|
||||||
|
|
||||||
# Make sure that the destination directory exists.
|
|
||||||
# this part is taken from Noah Friedman's mkinstalldirs script
|
|
||||||
|
|
||||||
# Skip lots of stat calls in the usual case.
|
|
||||||
if [ ! -d "$dstdir" ]; then
|
|
||||||
defaultIFS='
|
|
||||||
'
|
|
||||||
IFS="${IFS-$defaultIFS}"
|
|
||||||
|
|
||||||
oIFS=$IFS
|
|
||||||
# Some sh's can't handle IFS=/ for some reason.
|
|
||||||
IFS='%'
|
|
||||||
set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
|
|
||||||
IFS=$oIFS
|
|
||||||
|
|
||||||
pathcomp=''
|
|
||||||
|
|
||||||
while [ $# -ne 0 ] ; do
|
|
||||||
pathcomp=$pathcomp$1
|
|
||||||
shift
|
|
||||||
|
|
||||||
if [ ! -d "$pathcomp" ] ;
|
|
||||||
then
|
|
||||||
$mkdirprog "$pathcomp"
|
|
||||||
else
|
|
||||||
:
|
|
||||||
fi
|
|
||||||
|
|
||||||
pathcomp=$pathcomp/
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ x"$dir_arg" != x ]
|
|
||||||
then
|
|
||||||
$doit $instcmd "$dst" &&
|
|
||||||
|
|
||||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
|
|
||||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
|
|
||||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
|
|
||||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
|
|
||||||
else
|
|
||||||
|
|
||||||
# If we're going to rename the final executable, determine the name now.
|
|
||||||
|
|
||||||
if [ x"$transformarg" = x ]
|
|
||||||
then
|
|
||||||
dstfile=`basename "$dst"`
|
|
||||||
else
|
|
||||||
dstfile=`basename "$dst" $transformbasename |
|
|
||||||
sed $transformarg`$transformbasename
|
|
||||||
fi
|
|
||||||
|
|
||||||
# don't allow the sed command to completely eliminate the filename
|
|
||||||
|
|
||||||
if [ x"$dstfile" = x ]
|
|
||||||
then
|
|
||||||
dstfile=`basename "$dst"`
|
|
||||||
else
|
|
||||||
:
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make a couple of temp file names in the proper directory.
|
|
||||||
|
|
||||||
dsttmp=$dstdir/#inst.$$#
|
|
||||||
rmtmp=$dstdir/#rm.$$#
|
|
||||||
|
|
||||||
# Trap to clean up temp files at exit.
|
|
||||||
|
|
||||||
trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
|
|
||||||
trap '(exit $?); exit' 1 2 13 15
|
|
||||||
|
|
||||||
# Move or copy the file name to the temp name
|
|
||||||
|
|
||||||
$doit $instcmd "$src" "$dsttmp" &&
|
|
||||||
|
|
||||||
# and set any options; do chmod last to preserve setuid bits
|
|
||||||
|
|
||||||
# If any of these fail, we abort the whole thing. If we want to
|
|
||||||
# ignore errors from any of these, just make sure not to ignore
|
|
||||||
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
|
||||||
|
|
||||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
|
|
||||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
|
|
||||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
|
|
||||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
|
|
||||||
|
|
||||||
# Now remove or move aside any old file at destination location. We try this
|
|
||||||
# two ways since rm can't unlink itself on some systems and the destination
|
|
||||||
# file might be busy for other reasons. In this case, the final cleanup
|
|
||||||
# might fail but the new file should still install successfully.
|
|
||||||
|
|
||||||
{
|
|
||||||
if [ -f "$dstdir/$dstfile" ]
|
|
||||||
then
|
|
||||||
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
|
|
||||||
$doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
|
|
||||||
{
|
|
||||||
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
|
|
||||||
(exit 1); exit
|
|
||||||
}
|
|
||||||
else
|
|
||||||
:
|
|
||||||
fi
|
|
||||||
} &&
|
|
||||||
|
|
||||||
# Now rename the file to the real destination.
|
|
||||||
|
|
||||||
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
|
|
||||||
|
|
||||||
fi &&
|
|
||||||
|
|
||||||
# The final little trick to "correctly" pass the exit status to the exit trap.
|
|
||||||
|
|
||||||
{
|
|
||||||
(exit 0); exit
|
|
||||||
}
|
|
@ -1,336 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
# Common stub for a few missing GNU programs while installing.
|
|
||||||
# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
|
|
||||||
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
# 02111-1307, USA.
|
|
||||||
|
|
||||||
# As a special exception to the GNU General Public License, if you
|
|
||||||
# distribute this file as part of a program that contains a
|
|
||||||
# configuration script generated by Autoconf, you may include it under
|
|
||||||
# the same distribution terms that you use for the rest of that program.
|
|
||||||
|
|
||||||
if test $# -eq 0; then
|
|
||||||
echo 1>&2 "Try \`$0 --help' for more information"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
run=:
|
|
||||||
|
|
||||||
# In the cases where this matters, `missing' is being run in the
|
|
||||||
# srcdir already.
|
|
||||||
if test -f configure.ac; then
|
|
||||||
configure_ac=configure.ac
|
|
||||||
else
|
|
||||||
configure_ac=configure.in
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
--run)
|
|
||||||
# Try to run requested program, and just exit if it succeeds.
|
|
||||||
run=
|
|
||||||
shift
|
|
||||||
"$@" && exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# If it does not exist, or fails to run (possibly an outdated version),
|
|
||||||
# try to emulate it.
|
|
||||||
case "$1" in
|
|
||||||
|
|
||||||
-h|--h|--he|--hel|--help)
|
|
||||||
echo "\
|
|
||||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
|
||||||
|
|
||||||
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
|
||||||
error status if there is no known handling for PROGRAM.
|
|
||||||
|
|
||||||
Options:
|
|
||||||
-h, --help display this help and exit
|
|
||||||
-v, --version output version information and exit
|
|
||||||
--run try to run the given command, and emulate it if it fails
|
|
||||||
|
|
||||||
Supported PROGRAM values:
|
|
||||||
aclocal touch file \`aclocal.m4'
|
|
||||||
autoconf touch file \`configure'
|
|
||||||
autoheader touch file \`config.h.in'
|
|
||||||
automake touch all \`Makefile.in' files
|
|
||||||
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
|
||||||
flex create \`lex.yy.c', if possible, from existing .c
|
|
||||||
help2man touch the output file
|
|
||||||
lex create \`lex.yy.c', if possible, from existing .c
|
|
||||||
makeinfo touch the output file
|
|
||||||
tar try tar, gnutar, gtar, then tar without non-portable flags
|
|
||||||
yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
|
|
||||||
;;
|
|
||||||
|
|
||||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
|
||||||
echo "missing 0.4 - GNU automake"
|
|
||||||
;;
|
|
||||||
|
|
||||||
-*)
|
|
||||||
echo 1>&2 "$0: Unknown \`$1' option"
|
|
||||||
echo 1>&2 "Try \`$0 --help' for more information"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
|
|
||||||
aclocal*)
|
|
||||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
||||||
# We have it, but it failed.
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is missing on your system. You should only need it if
|
|
||||||
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
|
||||||
to install the \`Automake' and \`Perl' packages. Grab them from
|
|
||||||
any GNU archive site."
|
|
||||||
touch aclocal.m4
|
|
||||||
;;
|
|
||||||
|
|
||||||
autoconf)
|
|
||||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
||||||
# We have it, but it failed.
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is missing on your system. You should only need it if
|
|
||||||
you modified \`${configure_ac}'. You might want to install the
|
|
||||||
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
|
||||||
archive site."
|
|
||||||
touch configure
|
|
||||||
;;
|
|
||||||
|
|
||||||
autoheader)
|
|
||||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
||||||
# We have it, but it failed.
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is missing on your system. You should only need it if
|
|
||||||
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
|
||||||
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
|
||||||
from any GNU archive site."
|
|
||||||
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
|
||||||
test -z "$files" && files="config.h"
|
|
||||||
touch_files=
|
|
||||||
for f in $files; do
|
|
||||||
case "$f" in
|
|
||||||
*:*) touch_files="$touch_files "`echo "$f" |
|
|
||||||
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
|
||||||
*) touch_files="$touch_files $f.in";;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
touch $touch_files
|
|
||||||
;;
|
|
||||||
|
|
||||||
automake*)
|
|
||||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
||||||
# We have it, but it failed.
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is missing on your system. You should only need it if
|
|
||||||
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
|
||||||
You might want to install the \`Automake' and \`Perl' packages.
|
|
||||||
Grab them from any GNU archive site."
|
|
||||||
find . -type f -name Makefile.am -print |
|
|
||||||
sed 's/\.am$/.in/' |
|
|
||||||
while read f; do touch "$f"; done
|
|
||||||
;;
|
|
||||||
|
|
||||||
autom4te)
|
|
||||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
||||||
# We have it, but it failed.
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is needed, and you do not seem to have it handy on your
|
|
||||||
system. You might have modified some files without having the
|
|
||||||
proper tools for further handling them.
|
|
||||||
You can get \`$1Help2man' as part of \`Autoconf' from any GNU
|
|
||||||
archive site."
|
|
||||||
|
|
||||||
file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
|
|
||||||
test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
|
|
||||||
if test -f "$file"; then
|
|
||||||
touch $file
|
|
||||||
else
|
|
||||||
test -z "$file" || exec >$file
|
|
||||||
echo "#! /bin/sh"
|
|
||||||
echo "# Created by GNU Automake missing as a replacement of"
|
|
||||||
echo "# $ $@"
|
|
||||||
echo "exit 0"
|
|
||||||
chmod +x $file
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
bison|yacc)
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is missing on your system. You should only need it if
|
|
||||||
you modified a \`.y' file. You may need the \`Bison' package
|
|
||||||
in order for those modifications to take effect. You can get
|
|
||||||
\`Bison' from any GNU archive site."
|
|
||||||
rm -f y.tab.c y.tab.h
|
|
||||||
if [ $# -ne 1 ]; then
|
|
||||||
eval LASTARG="\${$#}"
|
|
||||||
case "$LASTARG" in
|
|
||||||
*.y)
|
|
||||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
|
||||||
if [ -f "$SRCFILE" ]; then
|
|
||||||
cp "$SRCFILE" y.tab.c
|
|
||||||
fi
|
|
||||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
|
||||||
if [ -f "$SRCFILE" ]; then
|
|
||||||
cp "$SRCFILE" y.tab.h
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
if [ ! -f y.tab.h ]; then
|
|
||||||
echo >y.tab.h
|
|
||||||
fi
|
|
||||||
if [ ! -f y.tab.c ]; then
|
|
||||||
echo 'main() { return 0; }' >y.tab.c
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
lex|flex)
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is missing on your system. You should only need it if
|
|
||||||
you modified a \`.l' file. You may need the \`Flex' package
|
|
||||||
in order for those modifications to take effect. You can get
|
|
||||||
\`Flex' from any GNU archive site."
|
|
||||||
rm -f lex.yy.c
|
|
||||||
if [ $# -ne 1 ]; then
|
|
||||||
eval LASTARG="\${$#}"
|
|
||||||
case "$LASTARG" in
|
|
||||||
*.l)
|
|
||||||
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
|
||||||
if [ -f "$SRCFILE" ]; then
|
|
||||||
cp "$SRCFILE" lex.yy.c
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
if [ ! -f lex.yy.c ]; then
|
|
||||||
echo 'main() { return 0; }' >lex.yy.c
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
help2man)
|
|
||||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
||||||
# We have it, but it failed.
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is missing on your system. You should only need it if
|
|
||||||
you modified a dependency of a manual page. You may need the
|
|
||||||
\`Help2man' package in order for those modifications to take
|
|
||||||
effect. You can get \`Help2man' from any GNU archive site."
|
|
||||||
|
|
||||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
|
||||||
if test -z "$file"; then
|
|
||||||
file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
|
|
||||||
fi
|
|
||||||
if [ -f "$file" ]; then
|
|
||||||
touch $file
|
|
||||||
else
|
|
||||||
test -z "$file" || exec >$file
|
|
||||||
echo ".ab help2man is required to generate this page"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
makeinfo)
|
|
||||||
if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
|
|
||||||
# We have makeinfo, but it failed.
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is missing on your system. You should only need it if
|
|
||||||
you modified a \`.texi' or \`.texinfo' file, or any other file
|
|
||||||
indirectly affecting the aspect of the manual. The spurious
|
|
||||||
call might also be the consequence of using a buggy \`make' (AIX,
|
|
||||||
DU, IRIX). You might want to install the \`Texinfo' package or
|
|
||||||
the \`GNU make' package. Grab either from any GNU archive site."
|
|
||||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
|
||||||
if test -z "$file"; then
|
|
||||||
file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
|
||||||
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
|
|
||||||
fi
|
|
||||||
touch $file
|
|
||||||
;;
|
|
||||||
|
|
||||||
tar)
|
|
||||||
shift
|
|
||||||
if test -n "$run"; then
|
|
||||||
echo 1>&2 "ERROR: \`tar' requires --run"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# We have already tried tar in the generic part.
|
|
||||||
# Look for gnutar/gtar before invocation to avoid ugly error
|
|
||||||
# messages.
|
|
||||||
if (gnutar --version > /dev/null 2>&1); then
|
|
||||||
gnutar "$@" && exit 0
|
|
||||||
fi
|
|
||||||
if (gtar --version > /dev/null 2>&1); then
|
|
||||||
gtar "$@" && exit 0
|
|
||||||
fi
|
|
||||||
firstarg="$1"
|
|
||||||
if shift; then
|
|
||||||
case "$firstarg" in
|
|
||||||
*o*)
|
|
||||||
firstarg=`echo "$firstarg" | sed s/o//`
|
|
||||||
tar "$firstarg" "$@" && exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
case "$firstarg" in
|
|
||||||
*h*)
|
|
||||||
firstarg=`echo "$firstarg" | sed s/h//`
|
|
||||||
tar "$firstarg" "$@" && exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: I can't seem to be able to run \`tar' with the given arguments.
|
|
||||||
You may want to install GNU tar or Free paxutils, or check the
|
|
||||||
command line arguments."
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is needed, and you do not seem to have it handy on your
|
|
||||||
system. You might have modified some files without having the
|
|
||||||
proper tools for further handling them. Check the \`README' file,
|
|
||||||
it often tells you about the needed prerequirements for installing
|
|
||||||
this package. You may also peek at any GNU archive site, in case
|
|
||||||
some other package would contain this missing \`$1' program."
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit 0
|
|
@ -1,111 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
# mkinstalldirs --- make directory hierarchy
|
|
||||||
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
|
|
||||||
# Created: 1993-05-16
|
|
||||||
# Public domain
|
|
||||||
|
|
||||||
errstatus=0
|
|
||||||
dirmode=""
|
|
||||||
|
|
||||||
usage="\
|
|
||||||
Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
|
|
||||||
|
|
||||||
# process command line arguments
|
|
||||||
while test $# -gt 0 ; do
|
|
||||||
case $1 in
|
|
||||||
-h | --help | --h*) # -h for help
|
|
||||||
echo "$usage" 1>&2
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-m) # -m PERM arg
|
|
||||||
shift
|
|
||||||
test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
|
|
||||||
dirmode=$1
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
--) # stop option processing
|
|
||||||
shift
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
-*) # unknown option
|
|
||||||
echo "$usage" 1>&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
*) # first non-opt arg
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
for file
|
|
||||||
do
|
|
||||||
if test -d "$file"; then
|
|
||||||
shift
|
|
||||||
else
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
case $# in
|
|
||||||
0) exit 0 ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case $dirmode in
|
|
||||||
'')
|
|
||||||
if mkdir -p -- . 2>/dev/null; then
|
|
||||||
echo "mkdir -p -- $*"
|
|
||||||
exec mkdir -p -- "$@"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
|
|
||||||
echo "mkdir -m $dirmode -p -- $*"
|
|
||||||
exec mkdir -m "$dirmode" -p -- "$@"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
for file
|
|
||||||
do
|
|
||||||
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
|
|
||||||
shift
|
|
||||||
|
|
||||||
pathcomp=
|
|
||||||
for d
|
|
||||||
do
|
|
||||||
pathcomp="$pathcomp$d"
|
|
||||||
case $pathcomp in
|
|
||||||
-*) pathcomp=./$pathcomp ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if test ! -d "$pathcomp"; then
|
|
||||||
echo "mkdir $pathcomp"
|
|
||||||
|
|
||||||
mkdir "$pathcomp" || lasterr=$?
|
|
||||||
|
|
||||||
if test ! -d "$pathcomp"; then
|
|
||||||
errstatus=$lasterr
|
|
||||||
else
|
|
||||||
if test ! -z "$dirmode"; then
|
|
||||||
echo "chmod $dirmode $pathcomp"
|
|
||||||
lasterr=""
|
|
||||||
chmod "$dirmode" "$pathcomp" || lasterr=$?
|
|
||||||
|
|
||||||
if test ! -z "$lasterr"; then
|
|
||||||
errstatus=$lasterr
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
pathcomp="$pathcomp/"
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
exit $errstatus
|
|
||||||
|
|
||||||
# Local Variables:
|
|
||||||
# mode: shell-script
|
|
||||||
# sh-indentation: 2
|
|
||||||
# End:
|
|
||||||
# mkinstalldirs ends here
|
|
@ -1,8 +0,0 @@
|
|||||||
bin_PROGRAMS = auth_server_lin
|
|
||||||
auth_server_lin_SOURCES = auth_server_lin.c md5.c
|
|
||||||
|
|
||||||
# set the include path found by configure
|
|
||||||
INCLUDES= $(all_includes)
|
|
||||||
|
|
||||||
# the library search path.
|
|
||||||
auth_server_lin_LDFLAGS = $(all_libraries)
|
|
@ -1,110 +0,0 @@
|
|||||||
/*
|
|
||||||
* Remote Laboratory FPGA Server
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along
|
|
||||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
*
|
|
||||||
* (c) 2009 Timothy Pearson
|
|
||||||
* Raptor Engineering
|
|
||||||
* http://www.raptorengineeringinc.com
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <pwd.h>
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
char *MakeMD5String(inString);
|
|
||||||
|
|
||||||
// Username information
|
|
||||||
struct passwd *pw;
|
|
||||||
uid_t uid;
|
|
||||||
|
|
||||||
// Configuration stuff
|
|
||||||
static const char filename[] = "/etc/remotefpga_users.conf";
|
|
||||||
char linedata [256];
|
|
||||||
|
|
||||||
// Valid usernames
|
|
||||||
char mdfives [10000][32];
|
|
||||||
|
|
||||||
int validateString(char *inputString) {
|
|
||||||
int i;
|
|
||||||
char *current_file_username;
|
|
||||||
char *current_file_md5_hash;
|
|
||||||
time_t mytime;
|
|
||||||
|
|
||||||
FILE *file = fopen(filename, "r");
|
|
||||||
if (file != NULL) {
|
|
||||||
char line [256]; // or other suitable maximum line size
|
|
||||||
i=0;
|
|
||||||
// read a line
|
|
||||||
while (fgets(line, sizeof line, file) != NULL) {
|
|
||||||
// Parse the line and update global variables (current line in variable "line")
|
|
||||||
switch (i) {
|
|
||||||
case 0: line[strlen(line)-1]=0;
|
|
||||||
current_file_username = strdup(line);
|
|
||||||
i=1;
|
|
||||||
break;
|
|
||||||
case 1: line[strlen(line)-1]=0;
|
|
||||||
printf("Username: %s\n\rPassword: %s\n\r", current_file_username, line);
|
|
||||||
current_file_username = strcat(current_file_username, line);
|
|
||||||
//mytime = time();
|
|
||||||
//printf ("%s\n\r", mytime.minute());
|
|
||||||
current_file_username = strcat(current_file_username, line);
|
|
||||||
printf("Authstring: %s\n\r", current_file_username);
|
|
||||||
printf("MD5: %s\n\r", MakeMD5String(current_file_username));
|
|
||||||
i=0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fclose(file);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printf("[WARN] Unable to open configuration file %s\n\r", filename);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
if (argc < 2) {
|
|
||||||
printf("[FAIL] Invalid argument(s)\n\rOptions:\n\r update <username> <password>\n\r server\n\r");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if ((strcmp(argv[1], "update") == 0) && (argc > 1)) {
|
|
||||||
uid = geteuid();
|
|
||||||
pw = getpwuid(uid);
|
|
||||||
if (pw) {
|
|
||||||
printf("[INFO] Updating credentials for user %s\n\r", pw->pw_name);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
printf("[FAIL] Cannot find name for user ID %lu\n\r", (unsigned long int) uid);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (strcmp(argv[1], "server") == 0) {
|
|
||||||
printf("[INFO] Starting server...\n\r");
|
|
||||||
validateString("1234");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
printf("[FAIL] Invalid argument(s)\n\rOptions:\n\r update <username> <password>\n\r server\n\r");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
|
||||||
}
|
|
@ -1,532 +0,0 @@
|
|||||||
/*
|
|
||||||
**********************************************************************
|
|
||||||
** md5.h -- Header file for implementation of MD5 **
|
|
||||||
** RSA Data Security, Inc. MD5 Message Digest Algorithm **
|
|
||||||
** Created: 2/17/90 RLR **
|
|
||||||
** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version **
|
|
||||||
** Revised (for MD5): RLR 4/27/91 **
|
|
||||||
** -- G modified to have y&~z instead of y&z **
|
|
||||||
** -- FF, GG, HH modified to add in last register done **
|
|
||||||
** -- Access pattern: round 2 works mod 5, round 3 works mod 3 **
|
|
||||||
** -- distinct additive constant for each step **
|
|
||||||
** -- round 4 added, working mod 7 **
|
|
||||||
**********************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
**********************************************************************
|
|
||||||
** Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. **
|
|
||||||
** **
|
|
||||||
** License to copy and use this software is granted provided that **
|
|
||||||
** it is identified as the "RSA Data Security, Inc. MD5 Message **
|
|
||||||
** Digest Algorithm" in all material mentioning or referencing this **
|
|
||||||
** software or this function. **
|
|
||||||
** **
|
|
||||||
** License is also granted to make and use derivative works **
|
|
||||||
** provided that such works are identified as "derived from the RSA **
|
|
||||||
** Data Security, Inc. MD5 Message Digest Algorithm" in all **
|
|
||||||
** material mentioning or referencing the derived work. **
|
|
||||||
** **
|
|
||||||
** RSA Data Security, Inc. makes no representations concerning **
|
|
||||||
** either the merchantability of this software or the suitability **
|
|
||||||
** of this software for any particular purpose. It is provided "as **
|
|
||||||
** is" without express or implied warranty of any kind. **
|
|
||||||
** **
|
|
||||||
** These notices must be retained in any copies of any part of this **
|
|
||||||
** documentation and/or software. **
|
|
||||||
**********************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* typedef a 32 bit type */
|
|
||||||
typedef unsigned long int UINT4;
|
|
||||||
|
|
||||||
/* Data structure for MD5 (Message Digest) computation */
|
|
||||||
typedef struct {
|
|
||||||
UINT4 i[2]; /* number of _bits_ handled mod 2^64 */
|
|
||||||
UINT4 buf[4]; /* scratch buffer */
|
|
||||||
unsigned char in[64]; /* input buffer */
|
|
||||||
unsigned char digest[16]; /* actual digest after MD5Final call */
|
|
||||||
} MD5_CTX;
|
|
||||||
|
|
||||||
void MD5Init ();
|
|
||||||
void MD5Update ();
|
|
||||||
void MD5Final ();
|
|
||||||
|
|
||||||
/*
|
|
||||||
**********************************************************************
|
|
||||||
** End of md5.h **
|
|
||||||
******************************* (cut) ********************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
unsigned char md5string[256];
|
|
||||||
|
|
||||||
/*
|
|
||||||
**********************************************************************
|
|
||||||
** md5.c **
|
|
||||||
** RSA Data Security, Inc. MD5 Message Digest Algorithm **
|
|
||||||
** Created: 2/17/90 RLR **
|
|
||||||
** Revised: 1/91 SRD,AJ,BSK,JT Reference C Version **
|
|
||||||
**********************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
**********************************************************************
|
|
||||||
** Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. **
|
|
||||||
** **
|
|
||||||
** License to copy and use this software is granted provided that **
|
|
||||||
** it is identified as the "RSA Data Security, Inc. MD5 Message **
|
|
||||||
** Digest Algorithm" in all material mentioning or referencing this **
|
|
||||||
** software or this function. **
|
|
||||||
** **
|
|
||||||
** License is also granted to make and use derivative works **
|
|
||||||
** provided that such works are identified as "derived from the RSA **
|
|
||||||
** Data Security, Inc. MD5 Message Digest Algorithm" in all **
|
|
||||||
** material mentioning or referencing the derived work. **
|
|
||||||
** **
|
|
||||||
** RSA Data Security, Inc. makes no representations concerning **
|
|
||||||
** either the merchantability of this software or the suitability **
|
|
||||||
** of this software for any particular purpose. It is provided "as **
|
|
||||||
** is" without express or implied warranty of any kind. **
|
|
||||||
** **
|
|
||||||
** These notices must be retained in any copies of any part of this **
|
|
||||||
** documentation and/or software. **
|
|
||||||
**********************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* -- include the following line if the md5.h header file is separate -- */
|
|
||||||
/* #include "md5.h" */
|
|
||||||
|
|
||||||
/* forward declaration */
|
|
||||||
static void Transform ();
|
|
||||||
|
|
||||||
static unsigned char PADDING[64] = {
|
|
||||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
||||||
};
|
|
||||||
|
|
||||||
/* F, G and H are basic MD5 functions: selection, majority, parity */
|
|
||||||
#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
|
|
||||||
#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
|
|
||||||
#define H(x, y, z) ((x) ^ (y) ^ (z))
|
|
||||||
#define I(x, y, z) ((y) ^ ((x) | (~z)))
|
|
||||||
|
|
||||||
/* ROTATE_LEFT rotates x left n bits */
|
|
||||||
#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
|
|
||||||
|
|
||||||
/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4 */
|
|
||||||
/* Rotation is separate from addition to prevent recomputation */
|
|
||||||
#define FF(a, b, c, d, x, s, ac) \
|
|
||||||
{(a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \
|
|
||||||
(a) = ROTATE_LEFT ((a), (s)); \
|
|
||||||
(a) += (b); \
|
|
||||||
}
|
|
||||||
#define GG(a, b, c, d, x, s, ac) \
|
|
||||||
{(a) += G ((b), (c), (d)) + (x) + (UINT4)(ac); \
|
|
||||||
(a) = ROTATE_LEFT ((a), (s)); \
|
|
||||||
(a) += (b); \
|
|
||||||
}
|
|
||||||
#define HH(a, b, c, d, x, s, ac) \
|
|
||||||
{(a) += H ((b), (c), (d)) + (x) + (UINT4)(ac); \
|
|
||||||
(a) = ROTATE_LEFT ((a), (s)); \
|
|
||||||
(a) += (b); \
|
|
||||||
}
|
|
||||||
#define II(a, b, c, d, x, s, ac) \
|
|
||||||
{(a) += I ((b), (c), (d)) + (x) + (UINT4)(ac); \
|
|
||||||
(a) = ROTATE_LEFT ((a), (s)); \
|
|
||||||
(a) += (b); \
|
|
||||||
}
|
|
||||||
|
|
||||||
void MD5Init (mdContext)
|
|
||||||
MD5_CTX *mdContext;
|
|
||||||
{
|
|
||||||
mdContext->i[0] = mdContext->i[1] = (UINT4)0;
|
|
||||||
|
|
||||||
/* Load magic initialization constants.
|
|
||||||
*/
|
|
||||||
mdContext->buf[0] = (UINT4)0x67452301;
|
|
||||||
mdContext->buf[1] = (UINT4)0xefcdab89;
|
|
||||||
mdContext->buf[2] = (UINT4)0x98badcfe;
|
|
||||||
mdContext->buf[3] = (UINT4)0x10325476;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MD5Update (mdContext, inBuf, inLen)
|
|
||||||
MD5_CTX *mdContext;
|
|
||||||
unsigned char *inBuf;
|
|
||||||
unsigned int inLen;
|
|
||||||
{
|
|
||||||
UINT4 in[16];
|
|
||||||
int mdi;
|
|
||||||
unsigned int i, ii;
|
|
||||||
|
|
||||||
/* compute number of bytes mod 64 */
|
|
||||||
mdi = (int)((mdContext->i[0] >> 3) & 0x3F);
|
|
||||||
|
|
||||||
/* update number of bits */
|
|
||||||
if ((mdContext->i[0] + ((UINT4)inLen << 3)) < mdContext->i[0])
|
|
||||||
mdContext->i[1]++;
|
|
||||||
mdContext->i[0] += ((UINT4)inLen << 3);
|
|
||||||
mdContext->i[1] += ((UINT4)inLen >> 29);
|
|
||||||
|
|
||||||
while (inLen--) {
|
|
||||||
/* add new character to buffer, increment mdi */
|
|
||||||
mdContext->in[mdi++] = *inBuf++;
|
|
||||||
|
|
||||||
/* transform if necessary */
|
|
||||||
if (mdi == 0x40) {
|
|
||||||
for (i = 0, ii = 0; i < 16; i++, ii += 4)
|
|
||||||
in[i] = (((UINT4)mdContext->in[ii+3]) << 24) |
|
|
||||||
(((UINT4)mdContext->in[ii+2]) << 16) |
|
|
||||||
(((UINT4)mdContext->in[ii+1]) << 8) |
|
|
||||||
((UINT4)mdContext->in[ii]);
|
|
||||||
Transform (mdContext->buf, in);
|
|
||||||
mdi = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MD5Final (mdContext)
|
|
||||||
MD5_CTX *mdContext;
|
|
||||||
{
|
|
||||||
UINT4 in[16];
|
|
||||||
int mdi;
|
|
||||||
unsigned int i, ii;
|
|
||||||
unsigned int padLen;
|
|
||||||
|
|
||||||
/* save number of bits */
|
|
||||||
in[14] = mdContext->i[0];
|
|
||||||
in[15] = mdContext->i[1];
|
|
||||||
|
|
||||||
/* compute number of bytes mod 64 */
|
|
||||||
mdi = (int)((mdContext->i[0] >> 3) & 0x3F);
|
|
||||||
|
|
||||||
/* pad out to 56 mod 64 */
|
|
||||||
padLen = (mdi < 56) ? (56 - mdi) : (120 - mdi);
|
|
||||||
MD5Update (mdContext, PADDING, padLen);
|
|
||||||
|
|
||||||
/* append length in bits and transform */
|
|
||||||
for (i = 0, ii = 0; i < 14; i++, ii += 4)
|
|
||||||
in[i] = (((UINT4)mdContext->in[ii+3]) << 24) |
|
|
||||||
(((UINT4)mdContext->in[ii+2]) << 16) |
|
|
||||||
(((UINT4)mdContext->in[ii+1]) << 8) |
|
|
||||||
((UINT4)mdContext->in[ii]);
|
|
||||||
Transform (mdContext->buf, in);
|
|
||||||
|
|
||||||
/* store buffer in digest */
|
|
||||||
for (i = 0, ii = 0; i < 4; i++, ii += 4) {
|
|
||||||
mdContext->digest[ii] = (unsigned char)(mdContext->buf[i] & 0xFF);
|
|
||||||
mdContext->digest[ii+1] =
|
|
||||||
(unsigned char)((mdContext->buf[i] >> 8) & 0xFF);
|
|
||||||
mdContext->digest[ii+2] =
|
|
||||||
(unsigned char)((mdContext->buf[i] >> 16) & 0xFF);
|
|
||||||
mdContext->digest[ii+3] =
|
|
||||||
(unsigned char)((mdContext->buf[i] >> 24) & 0xFF);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Basic MD5 step. Transform buf based on in.
|
|
||||||
*/
|
|
||||||
static void Transform (buf, in)
|
|
||||||
UINT4 *buf;
|
|
||||||
UINT4 *in;
|
|
||||||
{
|
|
||||||
UINT4 a = buf[0], b = buf[1], c = buf[2], d = buf[3];
|
|
||||||
|
|
||||||
/* Round 1 */
|
|
||||||
#define S11 7
|
|
||||||
#define S12 12
|
|
||||||
#define S13 17
|
|
||||||
#define S14 22
|
|
||||||
FF ( a, b, c, d, in[ 0], S11, 3614090360); /* 1 */
|
|
||||||
FF ( d, a, b, c, in[ 1], S12, 3905402710); /* 2 */
|
|
||||||
FF ( c, d, a, b, in[ 2], S13, 606105819); /* 3 */
|
|
||||||
FF ( b, c, d, a, in[ 3], S14, 3250441966); /* 4 */
|
|
||||||
FF ( a, b, c, d, in[ 4], S11, 4118548399); /* 5 */
|
|
||||||
FF ( d, a, b, c, in[ 5], S12, 1200080426); /* 6 */
|
|
||||||
FF ( c, d, a, b, in[ 6], S13, 2821735955); /* 7 */
|
|
||||||
FF ( b, c, d, a, in[ 7], S14, 4249261313); /* 8 */
|
|
||||||
FF ( a, b, c, d, in[ 8], S11, 1770035416); /* 9 */
|
|
||||||
FF ( d, a, b, c, in[ 9], S12, 2336552879); /* 10 */
|
|
||||||
FF ( c, d, a, b, in[10], S13, 4294925233); /* 11 */
|
|
||||||
FF ( b, c, d, a, in[11], S14, 2304563134); /* 12 */
|
|
||||||
FF ( a, b, c, d, in[12], S11, 1804603682); /* 13 */
|
|
||||||
FF ( d, a, b, c, in[13], S12, 4254626195); /* 14 */
|
|
||||||
FF ( c, d, a, b, in[14], S13, 2792965006); /* 15 */
|
|
||||||
FF ( b, c, d, a, in[15], S14, 1236535329); /* 16 */
|
|
||||||
|
|
||||||
/* Round 2 */
|
|
||||||
#define S21 5
|
|
||||||
#define S22 9
|
|
||||||
#define S23 14
|
|
||||||
#define S24 20
|
|
||||||
GG ( a, b, c, d, in[ 1], S21, 4129170786); /* 17 */
|
|
||||||
GG ( d, a, b, c, in[ 6], S22, 3225465664); /* 18 */
|
|
||||||
GG ( c, d, a, b, in[11], S23, 643717713); /* 19 */
|
|
||||||
GG ( b, c, d, a, in[ 0], S24, 3921069994); /* 20 */
|
|
||||||
GG ( a, b, c, d, in[ 5], S21, 3593408605); /* 21 */
|
|
||||||
GG ( d, a, b, c, in[10], S22, 38016083); /* 22 */
|
|
||||||
GG ( c, d, a, b, in[15], S23, 3634488961); /* 23 */
|
|
||||||
GG ( b, c, d, a, in[ 4], S24, 3889429448); /* 24 */
|
|
||||||
GG ( a, b, c, d, in[ 9], S21, 568446438); /* 25 */
|
|
||||||
GG ( d, a, b, c, in[14], S22, 3275163606); /* 26 */
|
|
||||||
GG ( c, d, a, b, in[ 3], S23, 4107603335); /* 27 */
|
|
||||||
GG ( b, c, d, a, in[ 8], S24, 1163531501); /* 28 */
|
|
||||||
GG ( a, b, c, d, in[13], S21, 2850285829); /* 29 */
|
|
||||||
GG ( d, a, b, c, in[ 2], S22, 4243563512); /* 30 */
|
|
||||||
GG ( c, d, a, b, in[ 7], S23, 1735328473); /* 31 */
|
|
||||||
GG ( b, c, d, a, in[12], S24, 2368359562); /* 32 */
|
|
||||||
|
|
||||||
/* Round 3 */
|
|
||||||
#define S31 4
|
|
||||||
#define S32 11
|
|
||||||
#define S33 16
|
|
||||||
#define S34 23
|
|
||||||
HH ( a, b, c, d, in[ 5], S31, 4294588738); /* 33 */
|
|
||||||
HH ( d, a, b, c, in[ 8], S32, 2272392833); /* 34 */
|
|
||||||
HH ( c, d, a, b, in[11], S33, 1839030562); /* 35 */
|
|
||||||
HH ( b, c, d, a, in[14], S34, 4259657740); /* 36 */
|
|
||||||
HH ( a, b, c, d, in[ 1], S31, 2763975236); /* 37 */
|
|
||||||
HH ( d, a, b, c, in[ 4], S32, 1272893353); /* 38 */
|
|
||||||
HH ( c, d, a, b, in[ 7], S33, 4139469664); /* 39 */
|
|
||||||
HH ( b, c, d, a, in[10], S34, 3200236656); /* 40 */
|
|
||||||
HH ( a, b, c, d, in[13], S31, 681279174); /* 41 */
|
|
||||||
HH ( d, a, b, c, in[ 0], S32, 3936430074); /* 42 */
|
|
||||||
HH ( c, d, a, b, in[ 3], S33, 3572445317); /* 43 */
|
|
||||||
HH ( b, c, d, a, in[ 6], S34, 76029189); /* 44 */
|
|
||||||
HH ( a, b, c, d, in[ 9], S31, 3654602809); /* 45 */
|
|
||||||
HH ( d, a, b, c, in[12], S32, 3873151461); /* 46 */
|
|
||||||
HH ( c, d, a, b, in[15], S33, 530742520); /* 47 */
|
|
||||||
HH ( b, c, d, a, in[ 2], S34, 3299628645); /* 48 */
|
|
||||||
|
|
||||||
/* Round 4 */
|
|
||||||
#define S41 6
|
|
||||||
#define S42 10
|
|
||||||
#define S43 15
|
|
||||||
#define S44 21
|
|
||||||
II ( a, b, c, d, in[ 0], S41, 4096336452); /* 49 */
|
|
||||||
II ( d, a, b, c, in[ 7], S42, 1126891415); /* 50 */
|
|
||||||
II ( c, d, a, b, in[14], S43, 2878612391); /* 51 */
|
|
||||||
II ( b, c, d, a, in[ 5], S44, 4237533241); /* 52 */
|
|
||||||
II ( a, b, c, d, in[12], S41, 1700485571); /* 53 */
|
|
||||||
II ( d, a, b, c, in[ 3], S42, 2399980690); /* 54 */
|
|
||||||
II ( c, d, a, b, in[10], S43, 4293915773); /* 55 */
|
|
||||||
II ( b, c, d, a, in[ 1], S44, 2240044497); /* 56 */
|
|
||||||
II ( a, b, c, d, in[ 8], S41, 1873313359); /* 57 */
|
|
||||||
II ( d, a, b, c, in[15], S42, 4264355552); /* 58 */
|
|
||||||
II ( c, d, a, b, in[ 6], S43, 2734768916); /* 59 */
|
|
||||||
II ( b, c, d, a, in[13], S44, 1309151649); /* 60 */
|
|
||||||
II ( a, b, c, d, in[ 4], S41, 4149444226); /* 61 */
|
|
||||||
II ( d, a, b, c, in[11], S42, 3174756917); /* 62 */
|
|
||||||
II ( c, d, a, b, in[ 2], S43, 718787259); /* 63 */
|
|
||||||
II ( b, c, d, a, in[ 9], S44, 3951481745); /* 64 */
|
|
||||||
|
|
||||||
buf[0] += a;
|
|
||||||
buf[1] += b;
|
|
||||||
buf[2] += c;
|
|
||||||
buf[3] += d;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
**********************************************************************
|
|
||||||
** End of md5.c **
|
|
||||||
******************************* (cut) ********************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
**********************************************************************
|
|
||||||
** md5driver.c -- sample routines to test **
|
|
||||||
** RSA Data Security, Inc. MD5 message digest algorithm. **
|
|
||||||
** Created: 2/16/90 RLR **
|
|
||||||
** Updated: 1/91 SRD **
|
|
||||||
**********************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
**********************************************************************
|
|
||||||
** Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. **
|
|
||||||
** **
|
|
||||||
** RSA Data Security, Inc. makes no representations concerning **
|
|
||||||
** either the merchantability of this software or the suitability **
|
|
||||||
** of this software for any particular purpose. It is provided "as **
|
|
||||||
** is" without express or implied warranty of any kind. **
|
|
||||||
** **
|
|
||||||
** These notices must be retained in any copies of any part of this **
|
|
||||||
** documentation and/or software. **
|
|
||||||
**********************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <string.h>
|
|
||||||
/* -- include the following file if the file md5.h is separate -- */
|
|
||||||
/* #include "md5.h" */
|
|
||||||
|
|
||||||
/* Prints message digest buffer in mdContext as 32 hexadecimal digits.
|
|
||||||
Order is from low-order byte to high-order byte of digest.
|
|
||||||
Each byte is printed with high-order hexadecimal digit first.
|
|
||||||
*/
|
|
||||||
static void MDPrint (mdContext)
|
|
||||||
MD5_CTX *mdContext;
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < 16; i++)
|
|
||||||
printf ("%02x", mdContext->digest[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
char *MDPrintString (mdContext)
|
|
||||||
MD5_CTX *mdContext;
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
sprintf(md5string, "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", mdContext->digest[0], mdContext->digest[1], mdContext->digest[2], mdContext->digest[3], mdContext->digest[4], mdContext->digest[5], mdContext->digest[6], mdContext->digest[7], mdContext->digest[8], mdContext->digest[9], mdContext->digest[10], mdContext->digest[11], mdContext->digest[12], mdContext->digest[13], mdContext->digest[14], mdContext->digest[15]);
|
|
||||||
return md5string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* size of test block */
|
|
||||||
#define TEST_BLOCK_SIZE 1000
|
|
||||||
|
|
||||||
/* number of blocks to process */
|
|
||||||
#define TEST_BLOCKS 10000
|
|
||||||
|
|
||||||
/* number of test bytes = TEST_BLOCK_SIZE * TEST_BLOCKS */
|
|
||||||
static long TEST_BYTES = (long)TEST_BLOCK_SIZE * (long)TEST_BLOCKS;
|
|
||||||
|
|
||||||
/* A time trial routine, to measure the speed of MD5.
|
|
||||||
Measures wall time required to digest TEST_BLOCKS * TEST_BLOCK_SIZE
|
|
||||||
characters.
|
|
||||||
*/
|
|
||||||
static void MDTimeTrial ()
|
|
||||||
{
|
|
||||||
MD5_CTX mdContext;
|
|
||||||
time_t endTime, startTime;
|
|
||||||
unsigned char data[TEST_BLOCK_SIZE];
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
/* initialize test data */
|
|
||||||
for (i = 0; i < TEST_BLOCK_SIZE; i++)
|
|
||||||
data[i] = (unsigned char)(i & 0xFF);
|
|
||||||
|
|
||||||
/* start timer */
|
|
||||||
printf ("MD5 time trial. Processing %ld characters...\n", TEST_BYTES);
|
|
||||||
time (&startTime);
|
|
||||||
|
|
||||||
/* digest data in TEST_BLOCK_SIZE byte blocks */
|
|
||||||
MD5Init (&mdContext);
|
|
||||||
for (i = TEST_BLOCKS; i > 0; i--)
|
|
||||||
MD5Update (&mdContext, data, TEST_BLOCK_SIZE);
|
|
||||||
MD5Final (&mdContext);
|
|
||||||
|
|
||||||
/* stop timer, get time difference */
|
|
||||||
time (&endTime);
|
|
||||||
MDPrint (&mdContext);
|
|
||||||
printf (" is digest of test input.\n");
|
|
||||||
printf
|
|
||||||
("Seconds to process test input: %ld\n", (long)(endTime-startTime));
|
|
||||||
printf
|
|
||||||
("Characters processed per second: %ld\n",
|
|
||||||
TEST_BYTES/(endTime-startTime));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Computes the message digest for string inString.
|
|
||||||
Prints out message digest, a space, the string (in quotes) and a
|
|
||||||
carriage return.
|
|
||||||
*/
|
|
||||||
static void MDString (inString)
|
|
||||||
char *inString;
|
|
||||||
{
|
|
||||||
MD5_CTX mdContext;
|
|
||||||
unsigned int len = strlen (inString);
|
|
||||||
|
|
||||||
MD5Init (&mdContext);
|
|
||||||
MD5Update (&mdContext, inString, len);
|
|
||||||
MD5Final (&mdContext);
|
|
||||||
MDPrint (&mdContext);
|
|
||||||
printf (" \"%s\"\n\n", inString);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Computes the message digest for string inString.
|
|
||||||
Prints out message digest, a space, the string (in quotes) and a
|
|
||||||
carriage return.
|
|
||||||
*/
|
|
||||||
char *MakeMD5String(inString)
|
|
||||||
char *inString;
|
|
||||||
{
|
|
||||||
MD5_CTX mdContext;
|
|
||||||
unsigned int len = strlen (inString);
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
MD5Init (&mdContext);
|
|
||||||
MD5Update (&mdContext, inString, len);
|
|
||||||
MD5Final (&mdContext);
|
|
||||||
return MDPrintString (&mdContext);
|
|
||||||
//return mdContext->digest[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Computes the message digest for a specified file.
|
|
||||||
Prints out message digest, a space, the file name, and a carriage
|
|
||||||
return.
|
|
||||||
*/
|
|
||||||
static void MDFile (filename)
|
|
||||||
char *filename;
|
|
||||||
{
|
|
||||||
FILE *inFile = fopen (filename, "rb");
|
|
||||||
MD5_CTX mdContext;
|
|
||||||
int bytes;
|
|
||||||
unsigned char data[1024];
|
|
||||||
|
|
||||||
if (inFile == NULL) {
|
|
||||||
printf ("%s can't be opened.\n", filename);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
MD5Init (&mdContext);
|
|
||||||
while ((bytes = fread (data, 1, 1024, inFile)) != 0)
|
|
||||||
MD5Update (&mdContext, data, bytes);
|
|
||||||
MD5Final (&mdContext);
|
|
||||||
MDPrint (&mdContext);
|
|
||||||
printf (" %s\n", filename);
|
|
||||||
fclose (inFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Writes the message digest of the data from stdin onto stdout,
|
|
||||||
followed by a carriage return.
|
|
||||||
*/
|
|
||||||
static void MDFilter ()
|
|
||||||
{
|
|
||||||
MD5_CTX mdContext;
|
|
||||||
int bytes;
|
|
||||||
unsigned char data[16];
|
|
||||||
|
|
||||||
MD5Init (&mdContext);
|
|
||||||
while ((bytes = fread (data, 1, 16, stdin)) != 0)
|
|
||||||
MD5Update (&mdContext, data, bytes);
|
|
||||||
MD5Final (&mdContext);
|
|
||||||
MDPrint (&mdContext);
|
|
||||||
printf ("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Runs a standard suite of test data.
|
|
||||||
*/
|
|
||||||
static void MDTestSuite ()
|
|
||||||
{
|
|
||||||
printf ("MD5 test suite results:\n\n");
|
|
||||||
MDString ("");
|
|
||||||
MDString ("a");
|
|
||||||
MDString ("abc");
|
|
||||||
MDString ("message digest");
|
|
||||||
MDString ("abcdefghijklmnopqrstuvwxyz");
|
|
||||||
MDString
|
|
||||||
("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
|
|
||||||
MDString
|
|
||||||
("1234567890123456789012345678901234567890\
|
|
||||||
1234567890123456789012345678901234567890");
|
|
||||||
/* Contents of file foo are "abc" */
|
|
||||||
MDFile ("foo");
|
|
||||||
}
|
|
@ -1,10 +1,10 @@
|
|||||||
INCLUDES= $(all_includes) $(KDE_INCLUDES)/tde
|
INCLUDES= $(all_includes) $(KDE_INCLUDES)/tde -I/usr/include/sasl
|
||||||
|
|
||||||
bin_PROGRAMS = remotefpga-authserver
|
bin_PROGRAMS = remotefpga_authserver
|
||||||
|
|
||||||
remotefpga-authserver_SOURCES = main.cpp
|
remotefpga_authserver_SOURCES = main.cpp auth_conn.cpp
|
||||||
|
|
||||||
remotefpga-authserver_METASOURCES = AUTO
|
remotefpga_authserver_METASOURCES = AUTO
|
||||||
remotefpga-authserver_LDFLAGS = $(all_libraries) $(KDE_RPATH) $(LIB_QT) -lDCOP $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx $(LIB_KIO) -lktexteditor
|
remotefpga_authserver_LDFLAGS = $(all_libraries) $(KDE_RPATH) $(LIB_QT) -lDCOP $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx $(LIB_KIO) -lktexteditor -lsasl2
|
||||||
|
|
||||||
KDE_OPTIONS = nofinal
|
KDE_OPTIONS = nofinal
|
||||||
|
@ -0,0 +1,89 @@
|
|||||||
|
/*
|
||||||
|
* Remote Laboratory Authentication Server
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along
|
||||||
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* (c) 2012 Timothy Pearson
|
||||||
|
* Raptor Engineering
|
||||||
|
* http://www.raptorengineeringinc.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <tqsocket.h>
|
||||||
|
#include <tqserversocket.h>
|
||||||
|
#include <tqapplication.h>
|
||||||
|
#include <tqvbox.h>
|
||||||
|
#include <tqtextview.h>
|
||||||
|
#include <tqlabel.h>
|
||||||
|
#include <tqpushbutton.h>
|
||||||
|
#include <tqtextstream.h>
|
||||||
|
|
||||||
|
#include <sasl.h>
|
||||||
|
#include <saslplug.h>
|
||||||
|
#include <saslutil.h>
|
||||||
|
|
||||||
|
class AuthSocket : public TQSocket
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
AuthSocket(int sock, TQObject *parent=0, const char *name=0);
|
||||||
|
~AuthSocket();
|
||||||
|
|
||||||
|
public:
|
||||||
|
void close();
|
||||||
|
int initiateKerberosHandshake();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void free_conn(void);
|
||||||
|
void send_sasl_data_to_network(const char *buffer, unsigned length, int netfd);
|
||||||
|
unsigned int get_sasl_data_from_network(char *buf);
|
||||||
|
int write_data_to_client(int fd, const char* readbuf, int cc);
|
||||||
|
int receive_data_from_client(char *buf, int netfd);
|
||||||
|
int authenticate_connection_with_kerberos(int netfd);
|
||||||
|
|
||||||
|
sasl_callback_t callbacks[];
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void connectionClosedHandler();
|
||||||
|
|
||||||
|
private:
|
||||||
|
char *iplocal;
|
||||||
|
char *ipremote;
|
||||||
|
char *searchpath;
|
||||||
|
const char *service;
|
||||||
|
char *localdomain;
|
||||||
|
char *userdomain;
|
||||||
|
sasl_conn_t *conn;
|
||||||
|
|
||||||
|
private:
|
||||||
|
int line;
|
||||||
|
TQString m_remoteHost;
|
||||||
|
|
||||||
|
friend class AuthServer;
|
||||||
|
};
|
||||||
|
|
||||||
|
class AuthServer : public TQServerSocket
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
AuthServer(TQObject* parent=0);
|
||||||
|
~AuthServer();
|
||||||
|
|
||||||
|
void newConnection(int socket);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void newConnect(AuthSocket*);
|
||||||
|
|
||||||
|
};
|
Loading…
Reference in new issue