For the sake of posterity, I will answer my own question.

I was casting my bucket into a file bucket and trying to access it. This was
incorrect. I needed to cast the data member of the bucket to the file
bucket.

Change this line:

> rv = apr_file_name_get((const char **)&outfn,((apr_bucket_file *)b)->fd);

To this:

>  rv = apr_file_name_get((const char **)&outfn,((apr_bucket_file
> *)b->data)->fd);



Jason

On Tue, Jul 19, 2011 at 12:19 PM, Jason Funk <jasonlf...@gmail.com> wrote:

> bump ;)
>
>
> On Tue, Jul 12, 2011 at 2:29 PM, Jason Funk <jasonlf...@gmail.com> wrote:
>
>> This seems like it should be trival but it isn't working for
>> me. Relevant code snippets:
>>
>> char * outfn; //apr_palloced later
>>> ...
>>> while ((b = APR_BRIGADE_FIRST(bb)) != APR_BRIGADE_SENTINEL(bb)) {
>>>          bytes=0;
>>>          if(APR_BUCKET_IS_FILE(b)){ //we should handle file buckets
>>> specially
>>>                 rv = apr_file_name_get((const char
>>> **)&outfn,((apr_bucket_file *)b)->fd);
>>>                 if (rv != APR_SUCCESS){
>>>                         //failed
>>>                         ....
>>>                 }else{
>>>                        //success
>>>                       ....
>>>                }
>>>         }else{
>>>                rv = apr_bucket_read(b, &buf, &bytes, APR_BLOCK_READ);
>>>          }
>>>      ...
>>>  }
>>>
>>
>>
>> If I am passed a file bucket, I don't need to read the bucket because the
>> only reason I'm reading the bucket is to write it to a file anyways so I
>> just want to switch my outfn from the temporary file I created to the file
>> buckets filename. I use apr_file_name_get() to get the file name but it's
>> just returning junk (with APR_SUCCESS return value). Outputting the
>> resulting file yields "Switching outfn to '0��!���!'"
>>
>> What am I doing wrong?
>>
>> Thanks,
>> Jason
>>
>>
>

Reply via email to