Apply patch: ncpfs-hg-commit-443.patch
This commit is contained in:
@@ -33,6 +33,7 @@
|
||||
#include <string.h>
|
||||
#include <ncp/nwcalls.h>
|
||||
#include <ncp/nwfse.h>
|
||||
#include <ncp/nwnet.h>
|
||||
|
||||
#include "private/libintl.h"
|
||||
#define _(X) gettext(X)
|
||||
@@ -175,8 +176,14 @@ main(int argc, char **argv)
|
||||
{
|
||||
time_t t;
|
||||
int err2;
|
||||
nuint32 sec;
|
||||
|
||||
err2 = ncp_get_file_server_time(conn, &t);
|
||||
err2 = __NWGetFileServerUTCTime(conn, &sec, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
if (err2) {
|
||||
err2 = ncp_get_file_server_time(conn, &t);
|
||||
} else {
|
||||
t = sec;
|
||||
}
|
||||
if (err2) {
|
||||
fprintf(stderr, "%s: %s\n", _("could not get server time"),
|
||||
strnwerror(err2));
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
#include <unistd.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#include <ncp/ncplib.h>
|
||||
#include <ncp/nwnet.h>
|
||||
|
||||
#include "private/libintl.h"
|
||||
#define _(X) gettext(X)
|
||||
@@ -124,32 +124,51 @@ main(int argc, char **argv)
|
||||
ncp_close(conn);
|
||||
return 1;
|
||||
}
|
||||
} else
|
||||
{ int offset;
|
||||
time_t last;
|
||||
} else {
|
||||
unsigned int offset;
|
||||
nuint32 sec, xsec;
|
||||
|
||||
if ((err = ncp_get_file_server_time(conn, &t)) != 0)
|
||||
{
|
||||
get_error: com_err(argv[0], err, _("when getting file server time"));
|
||||
ncp_close(conn);
|
||||
return 1;
|
||||
err = __NWGetFileServerUTCTime(conn, &sec, &xsec, NULL, NULL, NULL, NULL, NULL);
|
||||
if (err != 0) {
|
||||
if ((err = ncp_get_file_server_time(conn, &t)) != 0) {
|
||||
get_error: com_err(argv[0], err, _("when getting file server time"));
|
||||
ncp_close(conn);
|
||||
return 1;
|
||||
}
|
||||
if (accurate) {
|
||||
time_t last;
|
||||
|
||||
do {
|
||||
if ((err = ncp_get_file_server_time(conn, &last)) != 0)
|
||||
goto get_error;
|
||||
} while (last == t);
|
||||
t = last;
|
||||
offset = 0; /* we can read the time 1000s of times a second */
|
||||
} else {
|
||||
offset = 500000; /* if no accurate measure, then assume offset of 500ms */
|
||||
}
|
||||
} else {
|
||||
if (accurate) {
|
||||
nuint32 last;
|
||||
|
||||
do {
|
||||
offset = (xsec * 1000000ULL) >> 32;
|
||||
if (offset > 100) {
|
||||
usleep(1000000 - offset);
|
||||
}
|
||||
if ((err = __NWGetFileServerUTCTime(conn, &last, &xsec, NULL, NULL, NULL, NULL, NULL)) != 0) {
|
||||
goto get_error;
|
||||
}
|
||||
} while (last == sec);
|
||||
t = last;
|
||||
} else {
|
||||
t = sec;
|
||||
}
|
||||
offset = (xsec * 1000000ULL) >> 32;
|
||||
}
|
||||
|
||||
if(accurate)
|
||||
{
|
||||
do
|
||||
{ if ((err = ncp_get_file_server_time(conn, &last)) != 0)
|
||||
goto get_error;
|
||||
} while(last==t);
|
||||
t=last;
|
||||
offset=0; /* we can read the time 1000s of times a second */
|
||||
}
|
||||
else
|
||||
offset=500; /* if no accurate measure, then assume offset of 500ms */
|
||||
|
||||
if(get)
|
||||
{ timeval.tv_sec = t;
|
||||
timeval.tv_usec = offset*1000;
|
||||
if (get) {
|
||||
timeval.tv_sec = t;
|
||||
timeval.tv_usec = offset;
|
||||
settimeofday(&timeval, NULL);
|
||||
}
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user