Blame src/win32_support.h

Packit c32a2d
/*
Packit c32a2d
	Win32 support helper file
Packit c32a2d
Packit c32a2d
	This file is only for use with the mpg123 frontend.
Packit c32a2d
	win32 support helpers for libmpg123 are in src/libmpg123/compat.h
Packit c32a2d
*/
Packit c32a2d
#ifndef MPG123_WIN32_SUPPORT_H
Packit c32a2d
#define MPG123_WIN32_SUPPORT_H
Packit c32a2d
Packit c32a2d
#include "config.h"
Packit c32a2d
#include "mpg123.h"
Packit c32a2d
#include "httpget.h"
Packit c32a2d
#ifdef HAVE_WINDOWS_H
Packit c32a2d
Packit c32a2d
#define WIN32_LEAN_AND_MEAN 1
Packit c32a2d
#include <stdlib.h>
Packit c32a2d
#include <stdio.h>
Packit c32a2d
#include <string.h>
Packit c32a2d
#include <wchar.h>
Packit c32a2d
#include <windows.h>
Packit c32a2d
#include <winnls.h>
Packit c32a2d
#include <shellapi.h>
Packit c32a2d
#include <mmsystem.h>
Packit c32a2d
Packit c32a2d
#if defined (HAVE_WS2TCPIP_H) && !defined (__CYGWIN__)
Packit c32a2d
#include <winsock2.h>
Packit c32a2d
#include <ws2tcpip.h>
Packit c32a2d
#endif
Packit c32a2d
Packit c32a2d
#if defined (WANT_WIN32_SOCKETS) /*conflict with gethostname and select in select.h and unistd.h */
Packit c32a2d
/* 
Packit c32a2d
Note: Do not treat return values as valid file/socket handles, they only indicate success/failure.
Packit c32a2d
file descriptors are ignored, only the local ws.local_socket is used for storing socket handle,
Packit c32a2d
so the socket handle is always associated with the last call to win32_net_http_open
Packit c32a2d
*/
Packit c32a2d
Packit c32a2d
/**
Packit c32a2d
 * Opens an http URL
Packit c32a2d
 * @param[in] url URL to open
Packit c32a2d
 * @param[out] hd http data info
Packit c32a2d
 * @return -1 for failure, 1 for success
Packit c32a2d
 */
Packit c32a2d
int win32_net_http_open(char* url, struct httpdata *hd);
Packit c32a2d
Packit c32a2d
/**
Packit c32a2d
 * Reads from network socket
Packit c32a2d
 * @param[in] filedes Value is ignored, last open connection is used.
Packit c32a2d
 * @param[out] buf buffer to store data.
Packit c32a2d
 * @param[in] nbyte bytes to read.
Packit c32a2d
 * @return bytes read successfully from socket
Packit c32a2d
 */
Packit c32a2d
ssize_t win32_net_read (int fildes, void *buf, size_t nbyte);
Packit c32a2d
Packit c32a2d
/**
Packit c32a2d
 * Writes to network socket
Packit c32a2d
 * @param[in] filedes Value is ignored, last open connection is used.
Packit c32a2d
 * @param[in] buf buffer to read data from.
Packit c32a2d
 * @param[in] nbyte bytes to write.
Packit c32a2d
 * @return bytes written successfully to socket
Packit c32a2d
 */
Packit c32a2d
ssize_t win32_net_write (int fildes, const void *buf, size_t nbyte);
Packit c32a2d
Packit c32a2d
/**
Packit c32a2d
 * Similar to fgets - get a string from a stream
Packit c32a2d
 * @param[out] s buffer to Write to
Packit c32a2d
 * @param[in] n bytes of data to read.
Packit c32a2d
 * @param[in] stream ignored for compatiblity, last open connection is used.
Packit c32a2d
 * @return pointer to s if successful, NULL if failture
Packit c32a2d
 */
Packit c32a2d
char *win32_net_fgets(char *s, int n, int stream);
Packit c32a2d
Packit c32a2d
/**
Packit c32a2d
 * Initialize Winsock 2.2.
Packit c32a2d
 */
Packit c32a2d
void win32_net_init (void);
Packit c32a2d
Packit c32a2d
/**
Packit c32a2d
 * Shutdown all win32 sockets.
Packit c32a2d
 */
Packit c32a2d
void win32_net_deinit (void);
Packit c32a2d
Packit c32a2d
/**
Packit c32a2d
 * Close last open socket.
Packit c32a2d
 * @param[in] sock value is ignored.
Packit c32a2d
 */
Packit c32a2d
void win32_net_close (int sock);
Packit c32a2d
Packit c32a2d
/**
Packit c32a2d
 * Set reader callback for mpg123_open_fd
Packit c32a2d
 * @param[in] fr pointer to a mpg123_handle struct.
Packit c32a2d
 */
Packit c32a2d
void win32_net_replace (mpg123_handle *fr);
Packit c32a2d
#endif
Packit c32a2d
Packit c32a2d
#ifdef WANT_WIN32_UNICODE
Packit c32a2d
/**
Packit c32a2d
 * Put the windows command line into argv / argc, encoded in UTF-8.
Packit c32a2d
 * You are supposed to free up resources by calling win32_cmdline_free with the values you got from this one.
Packit c32a2d
 * @return 0 on success, -1 on error */
Packit c32a2d
int win32_cmdline_utf8(int * argc, char *** argv);
Packit c32a2d
Packit c32a2d
/**
Packit c32a2d
 * Free up cmdline memory (the argv itself, theoretically hidden resources, too).
Packit c32a2d
 */
Packit c32a2d
void win32_cmdline_free(int argc, char **argv);
Packit c32a2d
Packit c32a2d
#endif /* WIN32_WANT_UNICODE */
Packit c32a2d
Packit c32a2d
/**
Packit c32a2d
 * Set process priority
Packit c32a2d
 * @param arg -2: Idle, -1, bellow normal, 0, normal (ignored), 1 above normal, 2 highest, 3 realtime
Packit c32a2d
 */
Packit c32a2d
void win32_set_priority (const int arg);
Packit c32a2d
Packit c32a2d
#ifdef WANT_WIN32_FIFO
Packit c32a2d
/**
Packit c32a2d
 * win32_fifo_mkfifo
Packit c32a2d
 * Creates a named pipe of path.
Packit c32a2d
 * Should be closed with win32_fifo_close.
Packit c32a2d
 * @param[in] path Path of pipe, should be in form of "\\.\pipe\pipename".
Packit c32a2d
 * @return -1 on failure, 0 otherwise.
Packit c32a2d
 * @see win32_fifo_close
Packit c32a2d
 */
Packit c32a2d
int win32_fifo_mkfifo(const char *path);
Packit c32a2d
Packit c32a2d
/**
Packit c32a2d
 *win32_fifo_close
Packit c32a2d
 * Closes previously open pipe
Packit c32a2d
 */
Packit c32a2d
void win32_fifo_close(void);
Packit c32a2d
Packit c32a2d
/**
Packit c32a2d
 * win32_fifo_read_peek
Packit c32a2d
 * Checks how many bytes in fifo is pending read operation
Packit c32a2d
 * Only the tv_sec member in timeval is evaluated! No microsecond precision.
Packit c32a2d
 * @param[in] tv contains information on block duration
Packit c32a2d
 * @return bytes available
Packit c32a2d
 */
Packit c32a2d
DWORD win32_fifo_read_peek(struct timeval *tv);
Packit c32a2d
Packit c32a2d
/***
Packit c32a2d
 * win32_fifo_read
Packit c32a2d
 * Read up to nbyte of data from open pipe into buf
Packit c32a2d
 * @param[in] buf Pointer to buffer.
Packit c32a2d
 * @param[in] nbyte Number of bytes to read up to.
Packit c32a2d
 * @return Number of bytes actually read.
Packit c32a2d
 */
Packit c32a2d
ssize_t win32_fifo_read(void *buf, size_t nbyte);
Packit c32a2d
#endif /* #ifdef WANT_WIN32_FIFO */
Packit c32a2d
Packit c32a2d
#endif /* HAVE_WINDOWS_H */
Packit c32a2d
#endif /* MPG123_WIN32_SUPPORT_H */
Packit c32a2d