From 8a9fcd3014a4aee23b6fb7008a02679f8bf96200 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 14 Apr 2013 22:53:10 -0400 Subject: [PATCH] Kill off dangling else's in the InputCommon project. Some indentations were also too far for some things. Fixed this. Also update the license header to show Git instead of SVN. Got rid of some trailing spaces/tabs too. --- Source/Core/InputCommon/Src/ControllerEmu.cpp | 2 +- Source/Core/InputCommon/Src/ControllerEmu.h | 11 ++- .../ControllerInterface.cpp | 25 ++++-- .../DInput/DInputJoystick.cpp | 12 +++ .../DInput/DInputKeyboardMouse.cpp | 20 +++-- .../Src/ControllerInterface/SDL/SDL.cpp | 42 ++++++---- .../Src/ControllerInterface/XInput/XInput.cpp | 18 ++-- Source/Core/InputCommon/Src/GCPadStatus.h | 2 +- Source/Core/InputCommon/Src/InputConfig.cpp | 3 + Source/Core/InputCommon/Src/UDPWiimote.cpp | 82 +++++++++++++------ 10 files changed, 148 insertions(+), 69 deletions(-) diff --git a/Source/Core/InputCommon/Src/ControllerEmu.cpp b/Source/Core/InputCommon/Src/ControllerEmu.cpp index 2e6ad10617..964b6de405 100644 --- a/Source/Core/InputCommon/Src/ControllerEmu.cpp +++ b/Source/Core/InputCommon/Src/ControllerEmu.cpp @@ -12,7 +12,7 @@ // A copy of the GPL 2.0 should have been included with the program. // If not, see http://www.gnu.org/licenses/ -// Official SVN repository and contact information can be found at +// Official Git repository and contact information can be found at // http://code.google.com/p/dolphin-emu/ #include "ControllerEmu.h" diff --git a/Source/Core/InputCommon/Src/ControllerEmu.h b/Source/Core/InputCommon/Src/ControllerEmu.h index 6084a610a1..b05b059d91 100644 --- a/Source/Core/InputCommon/Src/ControllerEmu.h +++ b/Source/Core/InputCommon/Src/ControllerEmu.h @@ -12,7 +12,7 @@ // A copy of the GPL 2.0 should have been included with the program. // If not, see http://www.gnu.org/licenses/ -// Official SVN repository and contact information can be found at +// Official Git repository and contact information can be found at // http://code.google.com/p/dolphin-emu/ #ifndef _CONTROLLEREMU_H_ @@ -196,11 +196,15 @@ public: template void GetState(C* const buttons, const C* bitmasks) { - std::vector::iterator i = controls.begin(), + std::vector::iterator + i = controls.begin(), e = controls.end(); + for (; i!=e; ++i, ++bitmasks) + { if ((*i)->control_ref->State() > settings[0]->value) // threshold *buttons |= *bitmasks; + } } }; @@ -221,8 +225,9 @@ public: *digital |= *bitmasks; } else + { *analog = S(controls[i+trig_count]->control_ref->State() * range); - + } } } diff --git a/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp b/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp index 8e96231674..6a1427406d 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp @@ -157,7 +157,7 @@ bool ControllerInterface::UpdateOutput(const bool force) if (force) lk.lock(); else if (!lk.try_lock()) - return false; + return false; size_t ok_count = 0; @@ -173,7 +173,7 @@ bool ControllerInterface::UpdateOutput(const bool force) // // Device :: ~Device // -// dtor, delete all inputs/outputs on device destruction +// Destructor, delete all inputs/outputs on device destruction // ControllerInterface::Device::~Device() { @@ -209,9 +209,9 @@ void ControllerInterface::Device::AddOutput(Output* const o) // // Device :: ClearInputState // -// device classes should override this func -// ControllerInterface will call this when the device returns failure durring UpdateInput -// used to try to set all buttons and axes to their default state when user unplugs a gamepad durring play +// Device classes should override this function +// ControllerInterface will call this when the device returns failure during UpdateInput +// used to try to set all buttons and axes to their default state when user unplugs a gamepad during play // buttons/axes that were held down at the time of unplugging should be seen as not pressed after unplugging // void ControllerInterface::Device::ClearInputState() @@ -239,8 +239,10 @@ ControlState ControllerInterface::InputReference::State( const ControlState igno // bit of hax for "NOT" to work at start of expression if (ci != ce) + { if (ci->mode == 2) state = 1; + } for (; ci!=ce; ++ci) { @@ -354,7 +356,8 @@ bool ControllerInterface::DeviceQualifier::operator==(const ControllerInterface: if (name == devq.name) if (source == devq.source) return true; - return false; + + return false; } // @@ -421,7 +424,9 @@ void ControllerInterface::UpdateReference(ControllerInterface::ControlReference* break; // no terminating '`' character } else + { ctrl_str += c; + } } } @@ -478,7 +483,9 @@ ControllerInterface::Device::Control* ControllerInterface::InputReference::Detec return *i; } else if ((*i)->GetState() < (1 - INPUT_DETECT_THRESHOLD)) + { *state = false; + } } Common::SleepCurrentThread(10); time += 10; } @@ -490,8 +497,8 @@ ControllerInterface::Device::Control* ControllerInterface::InputReference::Detec // // OutputReference :: Detect // -// totally different from the inputReference detect / i have them combined so it was simplier to make the gui. -// the gui doesnt know the difference between an input and an output / its odd but i was lazy and it was easy +// Totally different from the inputReference detect / I have them combined so it was simpler to make the GUI. +// The GUI doesn't know the difference between an input and an output / it's odd but I was lazy and it was easy // // set all binded outputs to power for x milliseconds return false // @@ -499,7 +506,7 @@ ControllerInterface::Device::Control* ControllerInterface::OutputReference::Dete { // ignore device - // dont hang if we dont even have any controls mapped + // don't hang if we don't even have any controls mapped if (m_controls.size()) { State(1); diff --git a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.cpp b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.cpp index 9bc5364e76..ed5d1383ec 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.cpp @@ -319,9 +319,13 @@ Joystick::Joystick( /*const LPCDIDEVICEINSTANCE lpddi, */const LPDIRECTINPUTDEVI eff.lpvTypeSpecificParams = &diCF; } else if (1 == f) + { eff.cbTypeSpecificParams = sizeof(DIRAMPFORCE); + } else + { eff.cbTypeSpecificParams = sizeof(DIPERIODIC); + } LPDIRECTINPUTEFFECT pEffect; if (SUCCEEDED(m_device->CreateEffect(force_type_names[f].guid, &eff, &pEffect, NULL))) @@ -427,7 +431,9 @@ bool Joystick::UpdateInput() } } else + { hr = m_device->GetDeviceState(sizeof(m_state_in), &m_state_in); + } // try reacquire if input lost if (DIERR_INPUTLOST == hr || DIERR_NOTACQUIRED == hr) @@ -460,12 +466,16 @@ bool Joystick::UpdateOutput() ok_count += SUCCEEDED(i->iface->SetParameters(&eff, DIEP_TYPESPECIFICPARAMS | DIEP_START)); } else + { ok_count += SUCCEEDED(i->iface->Stop()); + } i->params = NULL; } else + { ++ok_count; + } } return (m_state_out.size() == ok_count); @@ -492,7 +502,9 @@ std::string Joystick::Axis::GetName() const } // slider else + { ss << "Slider " << (int)(m_index - 6); + } ss << (m_range < 0 ? '-' : '+'); return ss.str(); diff --git a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp index aea12c065c..866bce9671 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp @@ -56,15 +56,19 @@ void InitKeyboardMouse(IDirectInput8* const idi8, std::vectorCreateDevice( GUID_SysKeyboard, &kb_device, NULL))) { if (SUCCEEDED(kb_device->SetDataFormat(&c_dfDIKeyboard))) - if (SUCCEEDED(kb_device->SetCooperativeLevel(NULL, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE))) { - if (SUCCEEDED(idi8->CreateDevice( GUID_SysMouse, &mo_device, NULL ))) + if (SUCCEEDED(kb_device->SetCooperativeLevel(NULL, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE))) { - if (SUCCEEDED(mo_device->SetDataFormat(&c_dfDIMouse2))) - if (SUCCEEDED(mo_device->SetCooperativeLevel(NULL, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE))) + if (SUCCEEDED(idi8->CreateDevice( GUID_SysMouse, &mo_device, NULL ))) { - devices.push_back(new KeyboardMouse(kb_device, mo_device)); - return; + if (SUCCEEDED(mo_device->SetDataFormat(&c_dfDIMouse2))) + { + if (SUCCEEDED(mo_device->SetCooperativeLevel(NULL, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE))) + { + devices.push_back(new KeyboardMouse(kb_device, mo_device)); + return; + } + } } } } @@ -203,7 +207,9 @@ bool KeyboardMouse::UpdateOutput() memset( this, 0, sizeof(*this) ); type = INPUT_KEYBOARD; ki.wVk = key; - if (up) ki.dwFlags = KEYEVENTF_KEYUP; + + if (up) + ki.dwFlags = KEYEVENTF_KEYUP; } }; diff --git a/Source/Core/InputCommon/Src/ControllerInterface/SDL/SDL.cpp b/Source/Core/InputCommon/Src/ControllerInterface/SDL/SDL.cpp index c5ee3af23f..6c74c55d97 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/SDL/SDL.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/SDL/SDL.cpp @@ -34,7 +34,7 @@ void Init( std::vector& devices ) std::map name_counts; if (SDL_Init( SDL_INIT_FLAGS ) >= 0) - { + { // joysticks for(int i = 0; i < SDL_NumJoysticks(); ++i) { @@ -49,7 +49,7 @@ void Init( std::vector& devices ) delete js; } } - } + } } Joystick::Joystick(SDL_Joystick* const joystick, const int sdl_index, const unsigned int index) @@ -63,7 +63,7 @@ Joystick::Joystick(SDL_Joystick* const joystick, const int sdl_index, const unsi // "why don't my 360 gamepad triggers/rumble work correctly" #ifdef _WIN32 // checking the name is probably good (and hacky) enough - // but i'll double check with the num of buttons/axes + // but I'll double check with the num of buttons/axes std::string lcasename = GetName(); std::transform(lcasename.begin(), lcasename.end(), lcasename.begin(), tolower); @@ -204,7 +204,9 @@ void Joystick::ConstantEffect::SetState(const ControlState state) m_effect.effect.constant.length = SDL_HAPTIC_INFINITY; } else + { m_effect.effect.type = 0; + } const Sint16 old = m_effect.effect.constant.level; m_effect.effect.constant.level = state * 0x7FFF; @@ -220,7 +222,9 @@ void Joystick::RampEffect::SetState(const ControlState state) m_effect.effect.ramp.length = SDL_HAPTIC_INFINITY; } else + { m_effect.effect.type = 0; + } const Sint16 old = m_effect.effect.ramp.start; m_effect.effect.ramp.start = state * 0x7FFF; @@ -235,15 +239,17 @@ void Joystick::SineEffect::SetState(const ControlState state) m_effect.effect.type = SDL_HAPTIC_SINE; m_effect.effect.periodic.length = 250; } - else { + else + { m_effect.effect.type = 0; } const Sint16 old = m_effect.effect.periodic.magnitude; - m_effect.effect.periodic.period = 5; + m_effect.effect.periodic.period = 5; m_effect.effect.periodic.magnitude = state * 0x5000; - m_effect.effect.periodic.attack_length = 0; - m_effect.effect.periodic.fade_length = 500; + m_effect.effect.periodic.attack_length = 0; + m_effect.effect.periodic.fade_length = 500; + if (old != m_effect.effect.periodic.magnitude) m_effect.changed = true; } @@ -255,15 +261,17 @@ void Joystick::SquareEffect::SetState(const ControlState state) m_effect.effect.type = SDL_HAPTIC_SQUARE; m_effect.effect.periodic.length = 250; } - else { + else + { m_effect.effect.type = 0; } const Sint16 old = m_effect.effect.periodic.magnitude; - m_effect.effect.periodic.period = 5; + m_effect.effect.periodic.period = 5; m_effect.effect.periodic.magnitude = state * 0x5000; - m_effect.effect.periodic.attack_length = 0; - m_effect.effect.periodic.fade_length = 100; + m_effect.effect.periodic.attack_length = 0; + m_effect.effect.periodic.fade_length = 100; + if (old != m_effect.effect.periodic.magnitude) m_effect.changed = true; } @@ -275,15 +283,17 @@ void Joystick::TriangleEffect::SetState(const ControlState state) m_effect.effect.type = SDL_HAPTIC_TRIANGLE; m_effect.effect.periodic.length = 250; } - else { + else + { m_effect.effect.type = 0; } const Sint16 old = m_effect.effect.periodic.magnitude; - m_effect.effect.periodic.period = 5; + m_effect.effect.periodic.period = 5; m_effect.effect.periodic.magnitude = state * 0x5000; - m_effect.effect.periodic.attack_length = 0; - m_effect.effect.periodic.fade_length = 100; + m_effect.effect.periodic.attack_length = 0; + m_effect.effect.periodic.fade_length = 100; + if (old != m_effect.effect.periodic.magnitude) m_effect.changed = true; } @@ -316,7 +326,9 @@ bool Joystick::UpdateOutput() else // effect is already uploaded { if (i->effect.type) // if ouputstate >0 + { SDL_HapticUpdateEffect(m_haptic, i->id, &i->effect); // update the effect + } else { SDL_HapticStopEffect(m_haptic, i->id); // else, stop and remove the effect diff --git a/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp b/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp index 7fe54d0d09..f9df3891bb 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp @@ -31,13 +31,13 @@ static const struct { "Thumb R", XINPUT_GAMEPAD_RIGHT_THUMB } }; -static const char* const named_triggers[] = +static const char* const named_triggers[] = { "Trigger L", "Trigger R" }; -static const char* const named_axes[] = +static const char* const named_axes[] = { "Left X", "Left Y", @@ -45,7 +45,7 @@ static const char* const named_axes[] = "Right Y" }; -static const char* const named_motors[] = +static const char* const named_motors[] = { "Motor L", "Motor R" @@ -66,12 +66,14 @@ Device::Device(const XINPUT_CAPABILITIES& caps, u8 index) ZeroMemory(&m_current_state_out, sizeof(m_current_state_out)); // XInputGetCaps seems to always claim all capabilities are supported - // but i will leave all this stuff in, incase m$ fixes xinput up a bit + // but I will leave all this stuff in, incase m$ fixes xinput up a bit // get supported buttons for (int i = 0; i != sizeof(named_buttons)/sizeof(*named_buttons); ++i) + { if (named_buttons[i].bitmask & caps.Gamepad.wButtons) AddInput(new Button(i, m_state_in.Gamepad.wButtons)); + } // get supported triggers for (int i = 0; i != sizeof(named_triggers)/sizeof(*named_triggers); ++i) @@ -114,8 +116,8 @@ void Device::ClearInputState() std::string Device::GetName() const { // why aren't these defined - // subtype doesn't seem to work, i tested with 2 diff arcade sticks, both were shown as gamepad - // ill leave it in anyway, maybe m$ will fix it + // subtype doesn't seem to work, I tested with 2 different arcade sticks, both were shown as gamepad + // I'll leave it in anyway, maybe m$ will fix it switch (m_subtype) { @@ -140,7 +142,7 @@ std::string Device::GetSource() const return "XInput"; } -// update i/o +// Update I/O bool Device::UpdateInput() { @@ -157,7 +159,9 @@ bool Device::UpdateOutput() return (ERROR_SUCCESS == XInputSetState(m_index, &m_state_out)); } else + { return true; + } } // GET name/source/id diff --git a/Source/Core/InputCommon/Src/GCPadStatus.h b/Source/Core/InputCommon/Src/GCPadStatus.h index 835089a70d..38541570c4 100644 --- a/Source/Core/InputCommon/Src/GCPadStatus.h +++ b/Source/Core/InputCommon/Src/GCPadStatus.h @@ -12,7 +12,7 @@ // A copy of the GPL 2.0 should have been included with the program. // If not, see http://www.gnu.org/licenses/ -// Official SVN repository and contact information can be found at +// Official Git repository and contact information can be found at // http://code.google.com/p/dolphin-emu/ #ifndef _GCPAD_H_INCLUDED__ diff --git a/Source/Core/InputCommon/Src/InputConfig.cpp b/Source/Core/InputCommon/Src/InputConfig.cpp index 1988a9ebb7..12f5476283 100644 --- a/Source/Core/InputCommon/Src/InputConfig.cpp +++ b/Source/Core/InputCommon/Src/InputConfig.cpp @@ -78,7 +78,10 @@ bool InputPlugin::LoadConfig(bool isGC) (*i)->LoadConfig(profile_ini.GetOrCreateSection("Profile")); } else + { (*i)->LoadConfig(inifile.GetOrCreateSection((*i)->GetName().c_str())); + } + // update refs (*i)->UpdateReferences(g_controller_interface); } diff --git a/Source/Core/InputCommon/Src/UDPWiimote.cpp b/Source/Core/InputCommon/Src/UDPWiimote.cpp index f14f9ed7e2..e0cf787e0f 100644 --- a/Source/Core/InputCommon/Src/UDPWiimote.cpp +++ b/Source/Core/InputCommon/Src/UDPWiimote.cpp @@ -96,32 +96,39 @@ UDPWiimote::UDPWiimote(const char *_port, const char * name, int _index) : hints.ai_socktype = SOCK_DGRAM; hints.ai_flags = AI_PASSIVE; // use my IP - if (!int_port){ + if (!int_port) + { cleanup; err=-1; return; } - if ((rv = getaddrinfo(NULL, _port, &hints, &servinfo)) != 0) { + if ((rv = getaddrinfo(NULL, _port, &hints, &servinfo)) != 0) + { cleanup; err=-1; return; } // loop through all the results and bind to everything we can - for(p = servinfo; p != NULL; p = p->ai_next) { + for(p = servinfo; p != NULL; p = p->ai_next) + { sock_t sock; - if ((sock = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) == BAD_SOCK) { + if ((sock = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) == BAD_SOCK) + { continue; } - if (bind(sock, p->ai_addr, (int)p->ai_addrlen) == -1) { + + if (bind(sock, p->ai_addr, (int)p->ai_addrlen) == -1) + { close(sock); continue; } d->sockfds.push_back(sock); } - if (d->sockfds.empty()) { + if (d->sockfds.empty()) + { cleanup; err=-2; return; @@ -170,7 +177,9 @@ void UDPWiimote::mainThread() timeout.tv_sec=1; timeout.tv_usec=500000; broadcastPresence(); - } else { + } + else + { tleft-=telapsed; timeout.tv_sec=(long)(tleft/1000); timeout.tv_usec=(tleft%1000)*1000; @@ -186,6 +195,7 @@ void UDPWiimote::mainThread() if (rt) { for (std::list::iterator i=d->sockfds.begin(); i!=d->sockfds.end(); i++) + { if (FD_ISSET(*i,&fds)) { sock_t fd=*i; @@ -206,11 +216,14 @@ void UDPWiimote::mainThread() if (pharsePacket(bf,size)==0) { //NOTICE_LOG(WIIMOTE,"UDPWII New pack"); - } else { + } + else + { //NOTICE_LOG(WIIMOTE,"UDPWII Wrong pack format... ignoring"); } } } + } } } while (!(d->exit)); } @@ -230,16 +243,18 @@ UDPWiimote::~UDPWiimote() delete d; } -#define ACCEL_FLAG (1<<0) -#define BUTT_FLAG (1<<1) -#define IR_FLAG (1<<2) -#define NUN_FLAG (1<<3) -#define NUNACCEL_FLAG (1<<4) +#define ACCEL_FLAG (1 << 0) +#define BUTT_FLAG (1 << 1) +#define IR_FLAG (1 << 2) +#define NUN_FLAG (1 << 3) +#define NUNACCEL_FLAG (1 << 4) int UDPWiimote::pharsePacket(u8 * bf, size_t size) { - if (size<3) return -1; - if (bf[0]!=0xde) + if (size < 3) + return -1; + + if (bf[0] != 0xde) return -1; //if (bf[1]==0) // time=0; @@ -247,9 +262,11 @@ int UDPWiimote::pharsePacket(u8 * bf, size_t size) // return -1; //time=bf[1]; u32 *p=(u32*)(&bf[3]); - if (bf[2]&ACCEL_FLAG) + if (bf[2] & ACCEL_FLAG) { - if ((size-(((u8*)p)-bf))<12) return -1; + if ((size-(((u8*)p)-bf)) < 12) + return -1; + double ux,uy,uz; ux=(double)((s32)ntohl(*p)); p++; uy=(double)((s32)ntohl(*p)); p++; @@ -258,27 +275,39 @@ int UDPWiimote::pharsePacket(u8 * bf, size_t size) y=uy/1048576; z=uz/1048576; } - if (bf[2]&BUTT_FLAG) + + if (bf[2] & BUTT_FLAG) { - if ((size-(((u8*)p)-bf))<4) return -1; + if ((size-(((u8*)p)-bf)) < 4) + return -1; + mask=ntohl(*p); p++; } - if (bf[2]&IR_FLAG) + + if (bf[2] & IR_FLAG) { - if ((size-(((u8*)p)-bf))<8) return -1; + if ((size-(((u8*)p)-bf)) < 8) + return -1; + pointerX=((double)((s32)ntohl(*p)))/1048576; p++; pointerY=((double)((s32)ntohl(*p)))/1048576; p++; } - if (bf[2]&NUN_FLAG) + + if (bf[2] & NUN_FLAG) { - if ((size-(((u8*)p)-bf))<9) return -1; + if ((size-(((u8*)p)-bf)) < 9) + return -1; + nunMask=*((u8*)p); p=(u32*)(((u8*)p)+1); nunX=((double)((s32)ntohl(*p)))/1048576; p++; nunY=((double)((s32)ntohl(*p)))/1048576; p++; } - if (bf[2]&NUNACCEL_FLAG) + + if (bf[2] & NUNACCEL_FLAG) { - if ((size-(((u8*)p)-bf))<12) return -1; + if ((size-(((u8*)p)-bf)) < 12) + return -1; + double ux,uy,uz; ux=(double)((s32)ntohl(*p)); p++; uy=(double)((s32)ntohl(*p)); p++; @@ -287,6 +316,7 @@ int UDPWiimote::pharsePacket(u8 * bf, size_t size) naY=uy/1048576; naZ=uz/1048576; } + return 0; } @@ -314,7 +344,7 @@ void UDPWiimote::broadcastIPv4(const void * data, size_t size) their_addr.sin_family = AF_INET; their_addr.sin_port = htons(4431); their_addr.sin_addr.s_addr = INADDR_BROADCAST; - memset(their_addr.sin_zero, '\0', sizeof their_addr.sin_zero); + memset(their_addr.sin_zero, '\0', sizeof their_addr.sin_zero); int num; if ((num=sendto(d->bipv4_fd,(const dataz)data,(int)size,0,(struct sockaddr *) &their_addr, sizeof their_addr)) == -1)