Version19.263.1

This commit is contained in:
acanas 2020-09-02 12:20:21 +02:00
parent f5334808b2
commit 02c4a6020d
5 changed files with 73 additions and 45 deletions

View File

@ -31,6 +31,7 @@
#include "swad_database.h"
#include "swad_form.h"
#include "swad_HTML.h"
#include "swad_MAC.h"
#include "swad_parameter.h"
/*****************************************************************************/
@ -41,9 +42,6 @@
/***************************** Private constants *****************************/
/*****************************************************************************/
#define MAC_NUM_BYTES 6
#define MAC_LENGTH_MAC_ADDRESS (MAC_NUM_BYTES * 3 - 1) // xx:xx:xx:xx:xx:xx
/*****************************************************************************/
/******************************* Private types *******************************/
/*****************************************************************************/
@ -52,7 +50,7 @@
struct MAC_Params
{
long Cod; // Code (i.e. room code)
char MAC[MAC_LENGTH_MAC_ADDRESS + 1]; // MAC address
char MACstr[MAC_LENGTH_MAC_ADDRESS + 1]; // MAC address
};
/*****************************************************************************/
@ -67,8 +65,6 @@ static void MAC_PutParams (void *Args);
static void MAC_PutFormToEditMACAddress (Act_Action_t NextAction,const char *Anchor,
void (*FuncParams) (void *Args),void *Args);
static void MAC_MACnumToMACstr (unsigned long long MACnum,char MACstr[MAC_LENGTH_MAC_ADDRESS + 1]);
/*****************************************************************************/
/**************** Put hidden parameters to edit a MAC address ****************/
/*****************************************************************************/
@ -78,7 +74,7 @@ static void MAC_PutParams (void *Args)
if (Args)
{
Par_PutHiddenParamLong (NULL,"Cod",((struct MAC_Params *) Args)->Cod);
Par_PutHiddenParamString (NULL,"MAC",((struct MAC_Params *) Args)->MAC);
Par_PutHiddenParamString (NULL,"MAC",((struct MAC_Params *) Args)->MACstr);
}
}
@ -92,7 +88,7 @@ static void MAC_PutFormToEditMACAddress (Act_Action_t NextAction,const char *Anc
/* Form to enter a new MAC address */
Frm_StartFormAnchor (NextAction,Anchor);
FuncParams (Args);
HTM_INPUT_TEXT ("NewMAC",MAC_LENGTH_MAC_ADDRESS,((struct MAC_Params *) Args)->MAC,
HTM_INPUT_TEXT ("NewMAC",MAC_LENGTH_MAC_ADDRESS,((struct MAC_Params *) Args)->MACstr,
HTM_SUBMIT_ON_CHANGE,
"size=\"8\"");
Frm_EndForm ();
@ -157,7 +153,7 @@ void MAC_EditMACAddresses (long Cod,const char *Anchor,
if (sscanf (row[0],"%llu",&MACnum) == 1)
{
Params.Cod = Cod; // Code (i.e. room code)
MAC_MACnumToMACstr (MACnum,Params.MAC); // Current MAC address
MAC_MACnumToMACstr (MACnum,Params.MACstr); // Current MAC address in xx:xx:xx:xx:xx:xx format
MAC_PutFormToEditMACAddress (ActChgRooMAC,Anchor,
MAC_PutParams,&Params);
@ -168,7 +164,7 @@ void MAC_EditMACAddresses (long Cod,const char *Anchor,
/* Form to enter a new MAC address */
Params.Cod = Cod; // Code (i.e. room code)
Params.MAC[0] = '\0'; // Current MAC address
Params.MACstr[0] = '\0'; // Current MAC address in xx:xx:xx:xx:xx:xx format
MAC_PutFormToEditMACAddress (ActChgRooMAC,Anchor,
MAC_PutParams,&Params);
@ -213,13 +209,16 @@ unsigned long long MAC_GetMACnumFromForm (const char *ParamName)
/**** Convert from MAC as a number to string in xx:xx:xx:xx:xx:xx format *****/
/*****************************************************************************/
static void MAC_MACnumToMACstr (unsigned long long MACnum,char MACstr[MAC_LENGTH_MAC_ADDRESS + 1])
void MAC_MACnumToMACstr (unsigned long long MACnum,char MACstr[MAC_LENGTH_MAC_ADDRESS + 1])
{
snprintf (MACstr,MAC_LENGTH_MAC_ADDRESS + 1,"%02x:%02x:%02x:%02x:%02x:%02x",
(unsigned char) ((MACnum >> (CHAR_BIT * 5)) & ((1 << CHAR_BIT) - 1)),
(unsigned char) ((MACnum >> (CHAR_BIT * 4)) & ((1 << CHAR_BIT) - 1)),
(unsigned char) ((MACnum >> (CHAR_BIT * 3)) & ((1 << CHAR_BIT) - 1)),
(unsigned char) ((MACnum >> (CHAR_BIT * 2)) & ((1 << CHAR_BIT) - 1)),
(unsigned char) ((MACnum >> (CHAR_BIT * 1)) & ((1 << CHAR_BIT) - 1)),
(unsigned char) ((MACnum >> (CHAR_BIT * 0)) & ((1 << CHAR_BIT) - 1)));
if (MACnum)
snprintf (MACstr,MAC_LENGTH_MAC_ADDRESS + 1,"%02x:%02x:%02x:%02x:%02x:%02x",
(unsigned char) ((MACnum >> (CHAR_BIT * 5)) & ((1 << CHAR_BIT) - 1)),
(unsigned char) ((MACnum >> (CHAR_BIT * 4)) & ((1 << CHAR_BIT) - 1)),
(unsigned char) ((MACnum >> (CHAR_BIT * 3)) & ((1 << CHAR_BIT) - 1)),
(unsigned char) ((MACnum >> (CHAR_BIT * 2)) & ((1 << CHAR_BIT) - 1)),
(unsigned char) ((MACnum >> (CHAR_BIT * 1)) & ((1 << CHAR_BIT) - 1)),
(unsigned char) ((MACnum >> (CHAR_BIT * 0)) & ((1 << CHAR_BIT) - 1)));
else
MACstr[0] = '\0';
}

View File

@ -31,6 +31,9 @@
/************************** Public types and constants ***********************/
/*****************************************************************************/
#define MAC_NUM_BYTES 6
#define MAC_LENGTH_MAC_ADDRESS (MAC_NUM_BYTES * 3 - 1) // xx:xx:xx:xx:xx:xx
/*****************************************************************************/
/***************************** Public prototypes *****************************/
/*****************************************************************************/
@ -40,5 +43,6 @@ void MAC_EditMACAddresses (long Cod,const char *Anchor,
unsigned NumMACs,MYSQL_RES **mysql_res);
unsigned long long MAC_GetMACnumFromForm (const char *ParamName);
void MAC_MACnumToMACstr (unsigned long long MACnum,char MACstr[MAC_LENGTH_MAC_ADDRESS + 1]);
#endif

View File

@ -555,7 +555,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
#define Log_PLATFORM_VERSION "SWAD 19.263 (2020-09-02)"
#define Log_PLATFORM_VERSION "SWAD 19.263.1 (2020-09-02)"
#define CSS_FILE "swad19.253.css"
#define JS_FILE "swad19.254.js"
/*
@ -573,9 +573,10 @@ TODO: Que al generar un examen s
TODO: Create module swad_test_result
"sudo apt install webp" en Ubuntu, y "yum install libwebp libwebp-tools" en CentOS, para decodificar imágenes Web/ug reportado por Javier Fernández Baldomero.
Version 19.263 : Sep 02, 2020 New module swad_MAC for MAC addresses. (304364 lines)
Version 19.262 : Sep 01, 2020 Edition of MAC addresses in listing of rooms. (304239 lines)
Version 19.261 : Sep 01, 2020 MAC addresses are printed in listing of rooms. (304103 lines)
Version 19.263.1: Sep 02, 2020 MAC address in form to create a new room. (304389 lines)
Version 19.263: Sep 02, 2020 New module swad_MAC for MAC addresses. (304364 lines)
Version 19.262: Sep 01, 2020 Edition of MAC addresses in listing of rooms. (304239 lines)
Version 19.261: Sep 01, 2020 MAC addresses are printed in listing of rooms. (304103 lines)
Version 19.260.3: Aug 30, 2020 Fixed bug in API function answerMatchQuestion. Reported by Sergio Díaz Rueda. (304010 lines)
Version 19.260.2: Aug 28, 2020 Fixed bugs in API functions related to games and matches. Reported by Sergio Díaz Rueda. (304010 lines)
Version 19.260.1: Aug 26, 2020 Fixed bugs in API functions related to games and matches. Reported by Sergio Díaz Rueda. (304027 lines)

View File

@ -371,8 +371,8 @@ static unsigned Roo_GetMACAddresses (long RooCod,MYSQL_RES **mysql_res)
void Roo_ChangeMAC (void)
{
unsigned long long OldMAC;
unsigned long long NewMAC;
unsigned long long OldMACnum;
unsigned long long NewMACnum;
/***** Room constructor *****/
Roo_EditingRoomConstructor ();
@ -383,27 +383,27 @@ void Roo_ChangeMAC (void)
Lay_ShowErrorAndExit ("Code of room is missing.");
/* Get the old MAC address of the room */
OldMAC = MAC_GetMACnumFromForm ("MAC");
OldMACnum = MAC_GetMACnumFromForm ("MAC");
/* Get the new MAC address of the room */
NewMAC = MAC_GetMACnumFromForm ("NewMAC");
NewMACnum = MAC_GetMACnumFromForm ("NewMAC");
/***** Get data of the room from database *****/
Roo_GetDataOfRoomByCod (Roo_EditingRoom);
/***** Check if the new MAC is different from the old MAC *****/
if (OldMAC)
if (OldMACnum)
DB_QueryDELETE ("can not remove MAC address",
"DELETE FROM room_MAC"
" WHERE RooCod=%ld AND MAC=%llu",
Roo_EditingRoom->RooCod,OldMAC);
if (NewMAC)
Roo_EditingRoom->RooCod,OldMACnum);
if (NewMACnum)
/***** Update the table of rooms-MACs changing the old MAC for the new one *****/
DB_QueryREPLACE ("can not change MAC address",
"REPLACE INTO room_MAC (RooCod,MAC) VALUES (%ld,%llu)",
Roo_EditingRoom->RooCod,NewMAC);
Roo_EditingRoom->RooCod,NewMACnum);
Roo_EditingRoom->MAC = NewMAC;
Roo_EditingRoom->MACnum = NewMACnum;
}
/*****************************************************************************/
@ -1416,6 +1416,7 @@ static void Roo_PutFormToCreateRoom (const struct Bld_Buildings *Buildings)
extern const char *Txt_New_room;
extern const char *Txt_Create_room;
char StrCapacity[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char MACstr[MAC_LENGTH_MAC_ADDRESS + 1]; // MAC address in xx:xx:xx:xx:xx:xx format
/***** Begin form *****/
Frm_StartForm (ActNewRoo);
@ -1479,6 +1480,14 @@ static void Roo_PutFormToCreateRoom (const struct Bld_Buildings *Buildings)
"size=\"3\"");
HTM_TD_End ();
/***** MAC address *****/
HTM_TD_Begin ("class=\"LM\"");
MAC_MACnumToMACstr (Roo_EditingRoom->MACnum,MACstr);
HTM_INPUT_TEXT ("MAC",MAC_LENGTH_MAC_ADDRESS,MACstr,
HTM_DONT_SUBMIT_ON_CHANGE,
"size=\"8\"");
HTM_TD_End ();
HTM_TR_End ();
/***** End table, send button and end box *****/
@ -1554,6 +1563,10 @@ void Roo_ReceiveFormNewRoom (void)
Roo_MAX_CAPACITY,
Roo_UNLIMITED_CAPACITY);
/* Get MAC address */
Roo_EditingRoom->MACnum = MAC_GetMACnumFromForm ("MAC");
if (Roo_EditingRoom->ShrtName[0] &&
Roo_EditingRoom->FullName[0]) // If there's a room name
{
@ -1590,18 +1603,29 @@ static void Roo_CreateRoom (struct Roo_Room *Room)
Room->Type = Roo_NO_TYPE;
/***** Create a new room *****/
DB_QueryINSERT ("can not create room",
"INSERT INTO rooms"
" (CtrCod,BldCod,Floor,Type,ShortName,FullName,Capacity)"
" VALUES"
" (%ld,%ld,%d,'%s','%s','%s',%u)",
Gbl.Hierarchy.Ctr.CtrCod,
Room->BldCod,
Room->Floor,
Roo_TypesDB[Room->Type],
Room->ShrtName,
Room->FullName,
Room->Capacity);
Room->RooCod =
DB_QueryINSERTandReturnCode ("can not create room",
"INSERT INTO rooms"
" (CtrCod,BldCod,Floor,Type,ShortName,FullName,Capacity)"
" VALUES"
" (%ld,%ld,%d,'%s','%s','%s',%u)",
Gbl.Hierarchy.Ctr.CtrCod,
Room->BldCod,
Room->Floor,
Roo_TypesDB[Room->Type],
Room->ShrtName,
Room->FullName,
Room->Capacity);
/***** Create MAC address *****/
if (Room->MACnum)
DB_QueryINSERT ("can not create MAC address",
"INSERT INTO room_MAC"
" (RooCod,MAC)"
" VALUES"
" (%ld,%llu)",
Room->RooCod,
Room->MACnum);
}
/*****************************************************************************/
@ -1627,7 +1651,7 @@ static void Roo_EditingRoomConstructor (void)
Roo_EditingRoom->ShrtName[0] = '\0';
Roo_EditingRoom->FullName[0] = '\0';
Roo_EditingRoom->Capacity = Roo_UNLIMITED_CAPACITY;
Roo_EditingRoom->MAC = 0ULL;
Roo_EditingRoom->MACnum = 0ULL;
}
static void Roo_EditingRoomDestructor (void)

View File

@ -86,7 +86,7 @@ struct Roo_Room
char FullName[Roo_MAX_BYTES_FULL_NAME + 1]; // Room full name
unsigned Capacity; // Room seating capacity
// (maximum people who fit in the room)
unsigned long long MAC;
unsigned long long MACnum;
};
#define Roo_NUM_ORDERS 6