Estou tentando escrever um arquivo PNG. Estou sempre recebendo um erro de gravação ( CAIRO_STATUS_WRITE_ERROR
).
cairo_surface_t *image_surface = cairo_surface_create_similar_image(pBitmap -> mainSurface,
CAIRO_FORMAT_RGB24, pBitmap -> geom.width, pBitmap -> geom.height);
cairo_t *cr = cairo_create(image_surface);
cairo_set_source_surface(cr, pBitmap -> mainSurface, 0, 0);
cairo_paint(cr);
cairo_status_t cairo_errCode;
if(pFile)
{
char template[] = "./fileXXXXXX.png";
char *tempFileName = mkdtemp(template);
if(tempFileName)
{
if((cairo_errCode = cairo_surface_write_to_png(image_surface, tempFileName)) == CAIRO_STATUS_SUCCESS)
{
Pelo que entendi, isso indica claramente um erro de arquivo. Tentei vários locais para ver se não era um problema de permissão.
mkdtemp retorna um novo diretório temporário.
Você quer mkstemp (um novo arquivo temporário).