- fd = open (filename, O_WRONLY | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
- if (-1 == fd)
+ fd = GNUNET_DISK_file_open (filename,
+ GNUNET_DISK_OPEN_WRITE | GNUNET_DISK_OPEN_CREATE | GNUNET_DISK_OPEN_FAILIFEXISTS,
+ GNUNET_DISK_PERM_USER_READ| GNUNET_DISK_PERM_USER_WRITE | GNUNET_DISK_PERM_GROUP_READ);
+ if (NULL == fd)
- while (0 != fcntl (fd, F_SETLK, &fl))
+ while (GNUNET_YES != GNUNET_DISK_file_lock (fd, 0, sizeof (struct RsaPrivateKeyBinaryEncoded), GNUNET_YES))
- ("Could not aquire lock on file `%s' due to process %u: %s...\n"),
- filename, fl.l_pid, STRERROR (ec));
+ ("Could not aquire lock on file `%s': %s...\n"),
+ filename, STRERROR (ec));
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
_("Creating a new private key. This may take a while.\n"));
ret = GNUNET_CRYPTO_rsa_key_create ();
GNUNET_assert (ret != NULL);
enc = rsa_encode_key (ret);
GNUNET_assert (enc != NULL);
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
_("Creating a new private key. This may take a while.\n"));
ret = GNUNET_CRYPTO_rsa_key_create ();
GNUNET_assert (ret != NULL);
enc = rsa_encode_key (ret);
GNUNET_assert (enc != NULL);
-#ifndef MINGW
- fdatasync (fd);
- memset (&fl, 0, sizeof (struct flock));
- fl.l_type = F_UNLCK;
- fl.l_whence = SEEK_SET;
- fl.l_len = sizeof (struct RsaPrivateKeyBinaryEncoded);
- if (0 != fcntl (fd, F_SETLK, &fl))
+
+ GNUNET_DISK_file_sync (fd);
+ if (GNUNET_YES != GNUNET_DISK_file_unlock (fd, 0, sizeof (struct RsaPrivateKeyBinaryEncoded)))
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
_("Stored new private key in `%s'.\n"), filename);
return ret;
}
/* hostkey file exists already, read it! */
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
_("Stored new private key in `%s'.\n"), filename);
return ret;
}
/* hostkey file exists already, read it! */
-#ifndef MINGW
- memset (&fl, 0, sizeof (struct flock));
- fl.l_type = F_RDLCK;
- fl.l_whence = SEEK_SET;
- fl.l_len = sizeof (struct RsaPrivateKeyBinaryEncoded);
- if (0 != fcntl (fd, F_SETLK, &fl))
+ if (GNUNET_YES != GNUNET_DISK_file_lock (fd, 0, sizeof (struct RsaPrivateKeyBinaryEncoded), GNUNET_NO))
- _
- ("Could not aquire lock on file `%s' due to process %u: %s...\n"),
- filename, fl.l_pid, STRERROR (ec));
+ _("Could not aquire lock on file `%s': %s...\n"),
+ filename, STRERROR (ec));
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
_
("This may be ok if someone is currently generating a hostkey.\n"));
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
_
("This may be ok if someone is currently generating a hostkey.\n"));
{
/* eh, what!? File we opened is now gone!? */
GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR,
"stat", filename);
{
/* eh, what!? File we opened is now gone!? */
GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR,
"stat", filename);
-#ifndef MINGW
- memset (&fl, 0, sizeof (struct flock));
- fl.l_type = F_UNLCK;
- fl.l_whence = SEEK_SET;
- fl.l_len = sizeof (struct RsaPrivateKeyBinaryEncoded);
- if (0 != fcntl (fd, F_SETLK, &fl))
+ if (GNUNET_YES != GNUNET_DISK_file_unlock (fd, 0, sizeof (struct RsaPrivateKeyBinaryEncoded)))
/* maybe we got the read lock before the hostkey generating
process had a chance to get the write lock; give it up! */
/* maybe we got the read lock before the hostkey generating
process had a chance to get the write lock; give it up! */
- memset (&fl, 0, sizeof (struct flock));
- fl.l_type = F_UNLCK;
- fl.l_whence = SEEK_SET;
- fl.l_len = sizeof (struct RsaPrivateKeyBinaryEncoded);
- if (0 != fcntl (fd, F_SETLK, &fl))
+ if (GNUNET_YES != GNUNET_DISK_file_unlock (fd, 0, sizeof (struct RsaPrivateKeyBinaryEncoded)))
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
_
("When trying to read hostkey file `%s' I found %u bytes but I need at least %u.\n"),
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
_
("When trying to read hostkey file `%s' I found %u bytes but I need at least %u.\n"),
(unsigned int) sizeof (struct
RsaPrivateKeyBinaryEncoded));
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
(unsigned int) sizeof (struct
RsaPrivateKeyBinaryEncoded));
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- enc = GNUNET_malloc (sbuf.st_size);
- GNUNET_assert (sbuf.st_size == READ (fd, enc, sbuf.st_size));
+ enc = GNUNET_malloc (fs);
+ GNUNET_assert (fs == GNUNET_DISK_file_read (fd, enc, fs));
-#ifndef MINGW
- memset (&fl, 0, sizeof (struct flock));
- fl.l_type = F_UNLCK;
- fl.l_whence = SEEK_SET;
- fl.l_len = sizeof (struct RsaPrivateKeyBinaryEncoded);
- if (0 != fcntl (fd, F_SETLK, &fl))
+ if (GNUNET_YES != GNUNET_DISK_file_unlock (fd, 0, sizeof (struct RsaPrivateKeyBinaryEncoded)))
*
* @param hostkey private key to use for the signing
* @param purpose what to sign (size, purpose)
*
* @param hostkey private key to use for the signing
* @param purpose what to sign (size, purpose)