Added support for three levels of nesting of the 'pragma pack'
directives.

diff --git a/include/pshpack2.h b/include/pshpack2.h
index 8b7e29e..603e581 100644
--- a/include/pshpack2.h
+++ b/include/pshpack2.h
@@ -1,12 +1,29 @@
-#ifndef __WINE_PSHPACK_H
-#define __WINE_PSHPACK_H 2
+#if defined(__WINE_PSHPACK_H3)
 
-#if defined(__GNUC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
-#pragma pack(2)
-#elif !defined(RC_INVOKED)
-#error "2 as alignment isn't supported by the compiler"
-#endif /* defined(__GNUC__) || defined(__SUNPRO_CC) ; !defined(RC_INVOKED) */
+   /* Depth > 3 */
+#  error "Alignment nesting > 3 is not supported"
 
-#else /* !defined(__WINE_PSHPACK_H) */
-#error "Nested pushing of alignment isn't supported by the compiler"
-#endif /* !defined(__WINE_PSHPACK_H) */
+#else
+
+#  if !defined(__WINE_PSHPACK_H)
+#    define __WINE_PSHPACK_H  2
+     /* Depth == 1 */
+#  elif !defined(__WINE_PSHPACK_H2)
+#    define __WINE_PSHPACK_H2 2
+     /* Depth == 2 */
+#    define __WINE_INTERNAL_POPPACK
+#    include "poppack.h"
+#  elif !defined(__WINE_PSHPACK_H3)
+#    define __WINE_PSHPACK_H3 2
+     /* Depth == 3 */
+#    define __WINE_INTERNAL_POPPACK
+#    include "poppack.h"
+#  endif
+
+#  if defined(__GNUC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+#    pragma pack(2)
+#  elif !defined(RC_INVOKED)
+#    error "Adjusting the alignment is not supported with this compiler"
+#  endif
+
+#endif