1
0
Fork 0
forked from fte/fteqw

fileul is implemented - needs a commandline parameter at the moment.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1858 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2006-01-12 22:56:54 +00:00
parent e1caf72792
commit 232c7fbc15

View file

@ -1231,6 +1231,7 @@ void CL_ParseDownload (void)
} }
} }
static vfsfile_t *upload_file;
static qbyte *upload_data; static qbyte *upload_data;
static int upload_pos; static int upload_pos;
static int upload_size; static int upload_size;
@ -1242,13 +1243,25 @@ void CL_NextUpload(void)
int percent; int percent;
int size; int size;
if (!upload_data)
return;
r = upload_size - upload_pos; r = upload_size - upload_pos;
if (r > 768) if (r > 768)
r = 768; r = 768;
memcpy(buffer, upload_data + upload_pos, r);
if (upload_data)
{
memcpy(buffer, upload_data + upload_pos, r);
}
else if (upload_file)
{
r = VFS_READ(upload_file, buffer, r);
if (r == 0)
{
CL_StopUpload();
return;
}
}
else
return;
MSG_WriteByte (&cls.netchan.message, clc_upload); MSG_WriteByte (&cls.netchan.message, clc_upload);
MSG_WriteShort (&cls.netchan.message, r); MSG_WriteShort (&cls.netchan.message, r);
@ -1267,9 +1280,7 @@ Con_DPrintf ("UPLOAD: %6d: %d written\n", upload_pos - r, r);
Con_TPrintf (TL_UPLOADCOMPLEATE); Con_TPrintf (TL_UPLOADCOMPLEATE);
BZ_Free(upload_data); CL_StopUpload();
upload_data = 0;
upload_pos = upload_size = 0;
} }
void CL_StartUpload (qbyte *data, int size) void CL_StartUpload (qbyte *data, int size)
@ -1278,8 +1289,7 @@ void CL_StartUpload (qbyte *data, int size)
return; // gotta be connected return; // gotta be connected
// override // override
if (upload_data) CL_StopUpload();
BZ_Free(upload_data);
Con_DPrintf("Upload starting of %d...\n", size); Con_DPrintf("Upload starting of %d...\n", size);
@ -1293,7 +1303,7 @@ Con_DPrintf("Upload starting of %d...\n", size);
qboolean CL_IsUploading(void) qboolean CL_IsUploading(void)
{ {
if (upload_data) if (upload_data || upload_file)
return true; return true;
return false; return false;
} }
@ -1302,7 +1312,36 @@ void CL_StopUpload(void)
{ {
if (upload_data) if (upload_data)
BZ_Free(upload_data); BZ_Free(upload_data);
if (upload_file)
VFS_CLOSE(upload_file);
upload_file = NULL;
upload_data = NULL; upload_data = NULL;
upload_pos = upload_size = 0;
}
qboolean CL_StartUploadFile(char *filename)
{
if (!COM_CheckParm("-fileul"))
{
Con_Printf("You must currently use the -fileul commandline parameter in order to use this functionality\n");
return false;
}
if (cls.state < ca_onserver)
return false; // gotta be connected
CL_StopUpload();
upload_file = FS_OpenVFS(filename, "rb", FS_BASE);
upload_size = VFS_GETLEN(upload_file);
upload_pos = 0;
if (upload_file)
{
CL_NextUpload();
return true;
}
return false;
} }
/* /*