Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 18 additions & 9 deletions qsieve/factor.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
#if (!defined (__WIN32) || defined(__CYGWIN__)) && !defined(_MSC_VER)
#include <unistd.h>
#endif
#if defined (__WIN32) && !defined(__CYGWIN__)
#if (defined(__WIN32) && !defined(__CYGWIN__)) || defined(_MSC_VER)
#include <windows.h>
#endif

Expand Down Expand Up @@ -55,7 +55,9 @@ void qsieve_factor(fmpz_factor_t factors, const fmpz_t n)
fmpz_t temp, temp2, X, Y;
slong num_facs;
fmpz * facs;
int nchars;
#if (defined(__WIN32) && !defined(__CYGWIN__)) || defined(_MSC_VER)
char temp_path[MAX_PATH];
#endif

if (fmpz_sgn(n) < 0)
{
Expand Down Expand Up @@ -202,15 +204,22 @@ void qsieve_factor(fmpz_factor_t factors, const fmpz_t n)
pthread_mutex_init(&qs_inf->mutex, NULL);
#endif

#if defined (__WIN32) && !defined(__CYGWIN__)
srand((int) GetCurrentProcessId());
#if (defined(__WIN32) && !defined(__CYGWIN__)) || defined(_MSC_VER)
if (GetTempPathA(MAX_PATH, temp_path) == 0)
{
flint_printf("Exception (qsieve_factor). GetTempPathA() failed.\n");
flint_abort();
}
if (GetTempFileNameA(temp_path, "siqs", /*uUnique*/ TRUE, qs_inf->fname) == 0)
{
flint_printf("Exception (qsieve_factor). GetTempFileNameA() failed.\n");
flint_abort();
}
qs_inf->siqs = fopen(qs_inf->fname, "w");
#else
srand((int) getpid());
strcpy(qs_inf->fname, "/tmp/siqsXXXXXX"); /* must be shorter than fname_alloc_size in init.c */
qs_inf->siqs = fdopen(mkstemp(qs_inf->fname), "w");
#endif
nchars = sprintf(qs_inf->fname, "%d", (int) rand());
strcat(qs_inf->fname + nchars, "siqs.dat");

qs_inf->siqs = fopen(qs_inf->fname, "w");

for (j = qs_inf->small_primes; j < qs_inf->num_primes; j++)
{
Expand Down
11 changes: 10 additions & 1 deletion qsieve/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,21 @@
*/

#include "qsieve.h"
#if (defined(__WIN32) && !defined(__CYGWIN__)) || defined(_MSC_VER)
#include <windows.h>
#endif

void qsieve_init(qs_t qs_inf, const fmpz_t n)
{
size_t fname_alloc_size;
slong i;

qs_inf->fname = (char *) flint_malloc(20); /* space for filename */
#if (defined(__WIN32) && !defined(__CYGWIN__)) || defined(_MSC_VER)
fname_alloc_size = MAX_PATH;
#else
fname_alloc_size = 20;
#endif
qs_inf->fname = (char *) flint_malloc(fname_alloc_size); /* space for filename */

/* store n in struct */
fmpz_init_set(qs_inf->n, n);
Expand Down